x = "abcdefg"
x = x.match(/ab(?:cd)ef/)
Run Code Online (Sandbox Code Playgroud)
不应该是什么?它不是,它实际上是abcdef
为什么我的?:没有任何影响?(当然我的理解很可能是错的)
Ign*_*ams 26
(?:...)仍然匹配,它只是不为\1/ $1/ .groups(1)/ etc 创建一个新组.
你的理解是错误的.该组仍然是主要捕获的一部分,但它不会被视为子表达式捕获.以下将返回两个匹配的数组:
x = "abcdefg"
x = x.match(/ab(cd)ef/)
Run Code Online (Sandbox Code Playgroud)
数组索引0将是"abcdef"(完全匹配),数组索引1将是"cd",即子表达式捕获.添加?:告诉正则表达式不关心捕获子表达式,完全匹配仍然完全捕获.
根据您的其他评论,您可以通过多种方式完成您要做的事情.例如:
x.replace(/(ab)cd(ef)/, "$1$2");
x.slice(0, x.indexOf("cd")) + x.slice(x.indexOf("cd") + 2);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11444 次 |
| 最近记录: |