Javascript regex match()返回匹配的一部分(子集)

Javascript regex match() returning part (subset) of match

本文关键字:一部分 子集 返回 regex match Javascript      更新时间:2023-09-26

我使用的是这个JavaScript正则表达式:

var e = new RegExp('(, )?wortel')

因此,我的目标是匹配"wortel"", wortel",从而将","封装在括号中,并使用问号表示一次或零次出现。

但当我执行这行代码时:

'pus, wortel'.match(e)

我得到这个输出:

Array [ ", wortel", ", " ]

为什么第二个结果(", ")被包括在匹配中?我的正则表达式不需要单词"wortel"吗?如何实现我想要的regex规范?

PS我已经习惯了Ruby正则表达式,因此解释其差异可能有助于

这是因为正则表达式中的可选捕获组:

var e = new RegExp('(, )?wortel');

使用(?:...)语法的非捕获组可以避免捕获", "

var e = new RegExp('(?:, )?wortel');

此处(?:, )?使其成为非捕获组。

现在的结果将只是一个元素:

Array [ ", wortel" ]