花括号之间的正则表达式搜索

时间:2018-09-13 05:24:03

标签: javascript regex search

我有一个庞大的数组,有40,000多个项目-而不是遍历每个项目并检查每个属性,我想首先将庞大的数组序列化为一个字符串。

然后编写一个简单的正则表达式以匹配对象中的两个属性。

在每个单个对象中,它们都以'aaa'键和true值开头。

可以遵循多种键值对,然后对象上的最后一个键值对为zzz: true

var data = JSON.stringify([{
    aaa: true,
    some: 'cat goes meow',
    zzz: true
},{
    aaa: true,
    some: 'dog goes woof',
    zzz: true
}]);

我基本上希望有一个搜索词“ dog”,并有一个正则表达式将我从aaa返回到zzz,其中这些键之间的任何值都与查询dog相匹配,在上面的示例中,我希望从数组中获取最后一项。

我尝试过的操作:https://regex101.com/r/yNSTs9/2

2 个答案:

答案 0 :(得分:1)

我已将您的数组转换为字符串,并尝试根据需要查找数据。

在正则表达式下面检查

regex - /([^\}\{])([^\}\{]*)(dog)([^\}\{]*)(\})/g

var results = '[{"aaa":true,"some":"cat goes meow","zzz":true},{"aaa":true,"some":"dog goes woof","zzz":true}]'.match(/([^\}\{])([^\}\{]*)(dog)([^\}\{]*)(\})/g);

console.log(results);

答案 1 :(得分:0)

尝试使用此模式aaa.+(?=[^}]*dog[^}]*)[^}]+

说明:

aaa.+aaa和任何字符中的至少一个匹配,直到(?=[^}]*dog[^}]*),这表示位置,该位置位于包含dog BUT 不包含},因此我们不会跳到下一个对象(感谢[^}])。如果断言为真(正向提前匹配),则匹配所有内容,直到}[^}]+

Demo