在我的Chrome控制台中,我尝试了以下操作:

>  "abcd".match(/(.+)+/)
<  ["abcd", "abcd"]


对我来说,match返回两个“结果”的事实是出乎意料且奇怪的。我在Firefox中进行了测试,结果是相同的(因此我认为它不是任何类型的错误)。

但是,在Python中:

>  re.findall(r'(.+)+', 'abba')
<  ['abba']


我无法解释这一点。这是怎么回事?

最佳答案

根据MDN


  如果正则表达式不包含g标志,则返回与regexp.exec(string)相同的结果。


exec


  返回的数组将匹配的文本作为第一项,然后
  每个与之匹配的捕获括号中有一个包含
  捕获的文本。


因此,返回数组中的第一项是match("abcd"),第二项是唯一的括号组(也可能是"abcd")。

关于javascript - JavaScript`match`行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14145206/

10-13 01:27