在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

09-13 08:05