在 Chrome 中,
/{.*?}/g.exec('aaa{eee}uuuu')
返回
["{eee}"]
,而
/{(.*?)}/g.exec('aaa{eee}uuuu')
返回
["{eee}", "eee"]
第二个结果正是我所期望的。为什么第一个代码不返回“{eee}”的裸字符串?
最佳答案
因为在第一个正则表达式中您没有使用大括号。大括号用于对传递的字符串进行分组,但在第二个正则表达式中,您使用了大括号,根据您的输入对“eee”进行分组。
第一个正则表达式返回仅包含一个匹配元素的数组。但在第二个表达式中,它返回具有 2 个元素的数组。 [0] => 整个字符串匹配,[1] => 括号内的字符串匹配。如果使用更多大括号,那么它将返回 [2] => ...,[3] => ... 等
关于javascript -/{.*?}/g 之间不同。和/{(.*?)}/g,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35169311/