在我的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/