繁体   English   中英

正则表达式查找字符串并返回花括号之间的所有内容

[英]Regular Expression look for string and return everything between curly braces

我一直在尝试使用另一位SO用户建议的方法: https : //stackoverflow.com/a/1820837/1324861

但是没有运气。 基本上,我有一个大的JSON对象,我使用JSON.stringify()将其转换为字符串,以便对其执行正则表达式模式。 我的想法是,如果在花括号之间的任意位置找到我的搜索词“足球”,则返回{ }之间的所有内容。

我的数据如下所示:

{
  {
    User: "Peter",
    Hobbies: "Soccer, Football, ...",
    more...
  },
  {
    User: "Simon",
    Hobbies: "Pingpong, Soccer, Badminton",
    more...
  }
}

因此,如果我在字符串化的JSON对象中搜索“足球”,我想找回用户的全部信息。 我怎样才能做到这一点?

您可以从中得到启发( 无需将json转换为字符串 ):

var myData = [
  {
    User: "Peter",
    Hobbies: "Soccer, Football, ..."
  },
  {
    User: "Simon",
    Hobbies: "Pingpong, Soccer, Badminton"
  }
];
var results = "";
for (var i = 0; i < myData.length; i++) {
    if (myData[i]["Hobbies"].indexOf("Soccer") != -1) {
        results += JSON.stringify(myData [i]) + "\n";
    }                  
}
alert(results);

并不是说对一个JSON对象进行字符串化以在其上应用一个正则表达式(颤抖)没有任何意义,但是,嘿,这是您的CPU ...您可以使用如下代码:

\{[^{]+soccer[^}]+}

这应该可以满足您的需求。 但是...用正则表达式解析JSON ... Nononono ...

类似于“ {{^}] *(S | s)occer [^}] *}”

var json = [
  {
    User: "Peter",
    Hobbies: "Soccer, Football, ..."
  },
  {
    User: "Simon",
    Hobbies: "Pingpong, Badminton"
  }
];


var jsonString = JSON.stringify(json);
var regEx = /(\{.*?Soccer.*?\})/;
var user = jsonString.match(regEx)[1];
document.write(user);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM