我正在使用这个JavaScript正则表达式:
var e = new RegExp('(, )?wortel')
所以我的目标是匹配"wortel"OR ", wortel",因此将","封装在括号中并使用问号来表示一次或零次出现.
但是当我执行这行代码时:
'pus, wortel'.match(e)
Run Code Online (Sandbox Code Playgroud)
我得到这个输出:
Array [ ", wortel", ", " ]
Run Code Online (Sandbox Code Playgroud)
为什么第二个结果(", ")包含在比赛中?我的正则表达式不需要"wortel"这个词吗?我如何实现我想要的正则表达式规范?
PS我习惯使用Ruby正则表达式,因此解释这些差异可能会有所帮助
这是因为正则表达式中的可选捕获组:
var e = new RegExp('(, )?wortel');
Run Code Online (Sandbox Code Playgroud)
您可以", "通过使用具有(?:...)语法的非捕获组来避免捕获:
var e = new RegExp('(?:, )?wortel');
Run Code Online (Sandbox Code Playgroud)
这(?:, )?使得它成为非捕获组.
现在结果将只是一个元素:
Array [ ", wortel" ]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
185 次 |
| 最近记录: |