Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中查找带有regex或regexp的模式的所有实例_Javascript_Regex_Xregexp - Fatal编程技术网

如何在javascript中查找带有regex或regexp的模式的所有实例

如何在javascript中查找带有regex或regexp的模式的所有实例,javascript,regex,xregexp,Javascript,Regex,Xregexp,我有这根绳子 { prop1: 'val1', prop2:{ prop3: 'val3' , messages: {something:'val'} messages: { something:'val2', x : {x : 1, y : 5} } } , prop4: 'val4' } 如何在带有xregexp(或其他解决方案)的javascript中找到消息:{…}的所有实例 这个/messages:(\{(?>[^{}]+|(?1))*\})/g在php中工作,但在javascr

我有这根绳子

{ prop1: 'val1', prop2:{ prop3: 'val3' ,  messages: {something:'val'}  messages: { something:'val2', x : {x : 1, y : 5} } } , prop4: 'val4' }
如何在带有xregexp(或其他解决方案)的javascript中找到
消息:{…}
的所有实例

这个
/messages:(\{(?>[^{}]+|(?1))*\})/g
在php中工作,但在javascript中不工作

也无法通过使用
xregexp
递归来理解它

尝试

但获取字符串中的
不平衡分隔符时出错

更新 作为@vs97和@barmar注释,我尝试了
消息:(\{.+\})
并在多行上工作,当它是单行时仍然会发出问题


不幸的是,
matchBalanced()
对此没有用处,因为:

如果数据中的分隔符不平衡,将引发错误


因此,您不能仅使用它来查找字符串的平衡部分,您只能将其用于预期要平衡的数据——它返回最外层的子字符串。因为您要查找的是嵌套在内部的平衡零件,所以不会返回它们。

可能就这么简单?消息:(\{.+\})消息是在regex101.com中的不同行上,还是在问题中的一行上?但你也许可以使用一个。否则,我认为您应该制作/使用一个简单的解析器,因为这种类似JSON的结构看起来不像一种常规语言。特别是如果你的格式不依赖于空格来分隔行,而且只有
{}
才是重要的。@Khauri问题是他试图使用那个库。我看不懂。但是在这种情况下,我想看到OP尝试的代码会很好。谢谢你的回答,它解释了为什么我的regexp不工作,但我的问题仍然没有解决请参见我回答的最后一行,它说明了如何将此代码与其他代码结合起来解决问题。如何使用regex查找
消息的每个实例:
?很简单:
/messages:/g
对不起,我只是感到困惑,这将找到
消息:
,那么我如何知道该
消息:
的字符串有多远?如果我发现我为什么需要执行该匹配recusrive,请添加一些有关解决方案的psudo代码?
XRegExp.matchRecursive(str, 'messages: {', '}', 'gi')