为什么在设置g
修饰符时Javascript子匹配停止工作?
var text = 'test test test test';
var result = text.match(/t(e)(s)t/);
// Result: ["test", "e", "s"]
上面的代码运行良好,result[1]
是"e"
,result[2]
是"s"
。
var result = text.match(/t(e)(s)t/g);
// Result: ["test", "test", "test", "test"]
上面的代码忽略了我的捕获组。以下是唯一有效的解决方案吗?
var result = text.match(/test/g);
for (var i in result) {
console.log(result[i].match(/t(e)(s)t/));
}
/* Result:
["test", "e", "s"]
["test", "e", "s"]
["test", "e", "s"]
["test", "e", "s"]
*/
编辑:
我再次高兴地告诉你,10年后你现在可以做到这一点(.matchAll已经被添加到规范中)
let result = [...text.matchAll(/t(e)(s)t/g)];
https://stackoverflow.com/questions/844001
复制相似问题