/{.*?}/g之间有所不同。和/ {(。*?)} / g

时间:2016-02-03 05:40:13

标签: javascript regex

在Chrome中,

/{.*?}/g.exec('aaa{eee}uuuu')

返回

["{eee}"]

,而

/{(.*?)}/g.exec('aaa{eee}uuuu')

返回

["{eee}", "eee"]

第二个结果是我的预期。为什么不是第一个代码返回“{eee}”的裸字符串?

1 个答案:

答案 0 :(得分:1)

因为在第一个正则表达式中你没有使用大括号。大括号用于对传递的字符串进行分组,但在第二个正则表达式中,您使用了大括号,即#34; eee"根据你的意见。

第一个正则表达式只返回一个匹配的元素的数组。但在第二个表达式中它返回带有2个元素的数组。 [0] =>整个字符串匹配,[1] =>在大括号内匹配的字符串。如果使用更多大括号,则返回[2] => ......,[3] => ......等等

参考:JavaScript Regex Global Match Groups