[英]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.