JavaScript正则表达式迭代器提取组

Pas*_*ass 13 javascript regex node.js

假设我们有以下文字:"1 a,2 b,3 c,4 d"和以下表达式:/\d(\ w)/ g

我们想要做的是提取正则表达式所表示的a,b,c,d.

不幸的是"1 a,2 b,3 c,4 d".匹配(/\d(\ w)/ g)将产生一个数组:1 a,2 b,3 c,4 d和RegExp.$ 1仅包含最后一场比赛的小组,即RegExp.$ 1 =='d'.

我如何迭代这个正则表达式,以便我也可以提取组...我正在寻找一个也是内存效率的解决方案,即某种迭代器对象

编辑:它必须是通用的.我这里只提供一个简单的例子.一种解决方案是循环遍历数组并为每个项目重新应用正则表达式而不使用全局标志但我发现这个解决方案有点愚蠢,尽管它似乎是唯一的方法.

Tim*_*ker 12

var myregexp = /\d (\w)/g;
var match = myregexp.exec(subject);
while (match != null) {
    // matched text: match[0]
    // match start: match.index
    // capturing group n: match[n]
    match = myregexp.exec(subject);
}
Run Code Online (Sandbox Code Playgroud)

(无耻地从RegexBuddy手中夺走)