0

我有这个字符串

{ prop1: 'val1', prop2:{ prop3: 'val3' ,  messages: {something:'val'}  messages: { something:'val2', x : {x : 1, y : 5} } } , prop4: 'val4' }

如何messages: { ... }使用 xregexp(或其他解决方案)在 javascript 中找到所有实例

/messages: (\{(?>[^{}]+|(?1))*\})/g适用于 php,但不适用于 javascript

在此处输入图像描述

也无法通过使用xregexp递归http://xregexp.com/api/#matchRecursive

试过https://repl.it/@RezaRahmati/xregexp

XRegExp.matchRecursive(str, 'messages: {', '}', 'gi')

Unbalanced delimiter found in string出现错误

更新

正如@vs97 和@barmar 评论,我尝试messages: (\{.+\})并在多行上工作,当它是单行时仍然存在问题

在此处输入图像描述

4

1 回答 1

0

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

如果分隔符在数据中不平衡,则会引发错误。

因此,您不能只使用它来查找字符串的平衡部分,您只能将它与预期平衡的数据一起使用——它返回最外层的子字符串。由于您正在寻找的是嵌套在内部的平衡部分,因此它不会返回它们。

于 2019-09-06T01:45:36.290 回答