let regexp = /Rim.*?vert\s(\d*)cm/g
let content = "BEONE SPS SPIRIT, 2012y.b.,26 Rim - BEONE aluminium, vert 51cm «L»,ЕТТ600mm, 835 37 38"
执行
content.match(regexp)
之后,我得到了:["Rim - BEONE aluminium, vert 51cm"]
因此,我希望它将匹配的组(51)作为第二个数组元素返回。
但是当我使用regexp.exec(content)
时,一切似乎都很好:
["Rim - BEONE aluminium, vert 51cm", "51"]
为什么会有这样的差异?
我的代码\正则表达式出了什么问题,导致返回不同的结果?
g
修饰符,使用match
将得到相同的结果。我想它知道没有更多的匹配项,因此提供了捕获组。不是很确定,但可能是这样。 - user1106925String.match
文档:“如果正则表达式未包含 g 标志,则返回与 RegExp.exec() 相同的结果[...] 如果正则表达式包含 g 标志,则该方法返回一个数组,其中包含所有匹配的子字符串而不是匹配对象。未捕获的分组不会返回。” - Hamms