RegEx非捕获组问题

时间:2012-05-23 12:28:11

标签: javascript regex

为什么关注返回["vddv"]而不是[“dd”]:

"aaavddv".match(/(?:v).*(?:v)/)

3 个答案:

答案 0 :(得分: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不支持lookbehind。

答案 1 :(得分:3)

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

整个匹配正确vddv但如果您只想匹配dd,则需要使用捕获组(并查看元素[1]

答案 2 :(得分:3)

/(?:v).*(?:v)/指定表达式v(字符数)v