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

时间:2012-07-24 15:24:56

标签: javascript regex curly-braces

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

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

我的数据可能如下所示:

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

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

4 个答案:

答案 0 :(得分:2)

你可以从中激励(不将你的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);

答案 1 :(得分:1)

并不是说将字符串化JSON对象应用于它上面的正则表达式(不寒而栗)是没有意义的,但是嘿,这是你的CPU ......你可以使用这样的东西:

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

这应该能够找到你想要的东西。但是......用正则表达式解析JSON ...... Nononono ......

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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);