我正在使用此JavaScript正则表达式:var e = new RegExp('(, )?wortel')
因此,我的目标是匹配"wortel"
或", wortel"
,从而将“,”封装在方括号中,并使用问号表示一个或零次出现。
但是,当我执行以下代码行时:
'pus, wortel'.match(e)
我得到以下输出:
Array [ ", wortel", ", " ]
为什么第二个结果(
", "
)被包含在比赛中?我的正则表达式不需要“ wortel”一词吗?以及如何达到所需的正则表达式规格?PS我已经习惯了Ruby正则表达式,所以解释差异可能会有所帮助
最佳答案
这是由于正则表达式中的可选捕获组:
var e = new RegExp('(, )?wortel');
您可以通过使用具有
", "
语法的非捕获组来避免捕获(?:...)
:var e = new RegExp('(?:, )?wortel');
在这里
(?:, )?
使其成为非捕获组。现在结果将只是一个元素:
Array [ ", wortel" ]