正则表达式非捕获组问题

4
为什么以下代码返回["vddv"]而不是["dd"]
"aaavddv".match(/(?:v).*(?:v)/)
3个回答

4
(?:v) # matches 'v' this is a non-capturing group, not a lookbehind
.*    # matches 'dd'
(?:v) # matches 'v' this is a non-capturing group, not a lookahead

非捕获组仍参与匹配。也许您想要前瞻/后顾?但Javascript不支持后顾。

3
"aaavddv".match(/(?:v)(.*)(?:v)/)[1]

整个匹配是正确的 vddv,但如果你只想匹配 dd,你需要使用一个捕获组(并查看元素 [1])。

3
< p > /(?:v).*(?:v)/ 表示 v(字符数量)v 的表达式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接