我很好奇为什么以下RegEx匹配返回两次相同的匹配。为什么这个Javascript RegExp返回两次相同的匹配?
var line = "APT5000* A 00001";
var matches = line.match(new RegExp("^(.{3})", "i"));
console.log('Number of matches: %d', matches.length);
console.log('matches[0]: %s', matches[0]);
console.log('matches[1]: %s', matches[1]);
结果如下输出:
Number of matches: 2
matches[0]: APT
matches[1]: APT
我本来预期,而不是只有一个匹配。
各种资源在线表明这是预期行为,第一个结果始终是“完整匹配”,然后是特定匹配。
我的问题只是这个......“为什么?这种行为背后的逻辑是什么?”
试试这个:'new RegExp(“^(。{3})。{3}(。{3})”,“i”)''。你看到发生了什么? – dasblinkenlight
*捕获组和反向引用是正则表达式的一些更有趣的功能。你在子表达式中放置一个子表达式,你可以用'\ 1'或'$ 1' *来获取捕获。并且'\ 0','$ 0'或ECMAScript特定的'$&'返回完整匹配。 – revo