在Chrome中,
/{.*?}/g.exec('aaa{eee}uuuu')
退货
["{eee}"]
,而
/{(.*?)}/g.exec('aaa{eee}uuuu')
退货
["{eee}", "eee"]
第二个结果是我所期望的。为什么第一个代码不返回裸字符串“ {eee}”?
最佳答案
因为在第一个正则表达式中您没有使用花括号。大括号用于对传递的字符串进行分组,但是在第二个正则表达式中,您使用了根据输入将“ eee”分组的大括号。
第一个正则表达式返回只有一个匹配元素的数组。但是在第二个表达式中,它返回带有2个元素的数组。 [0] =>整个字符串匹配,[1] =>字符串在大括号内匹配。如果使用了更多的大括号,则它将返回[2] => ...,[3] => ...,依此类推
参考:JavaScript Regex Global Match Groups