此问题在此处已有答案:
Why does a RegExp with global flag give wrong results?(7个答案)
2天前关闭。
有人能帮我检查一下这个代码片段吗?我只是在数组上循环,但是最后一项返回false或null,即使它与模式匹配。
let texts = ["Invoice_001_1", "Invoice_001_2"];
var regTest = /(([a-zA-Z 0-9]+)_([0-9]+)_([0-9]+)$|[a-zA-Z ]+_([0-9]+)$)/gi;
for(var x=0; x<texts.length; x++) {
console.log(texts[x]);
var matchReg = regTest.exec(texts[x]);
console.log(matchReg);
}
1条答案
按热度按时间yftpprvb1#
问题是当使用
/g
时,js有一个小问题,它告诉正则表达式保留最后一个匹配的索引。修复方法是手动重置索引: