假设我有琴弦

"12345"

如果我.match(/\d{3}/g),我只会得到一个匹配项"123"。为什么我没有[ "123", "234", "345" ]

最佳答案

您不能仅使用正则表达式来做到这一点,但是可以非常接近:

var pat = /(?=(\d{3}))\d/g;
var results = [];
var match;

while ( (match = pat.exec( '1234567' ) ) != null ) {
  results.push( match[1] );
}

console.log(results);


换句话说,您捕获了前行中的所有三个数字,然后返回并以常规方式匹配一个字符,只是提高了匹配位置。你怎么消费这个角色都没有关系。 .\d一样好。而且,如果您真的很喜欢冒险,可以只使用前瞻功能,并让JavaScript处理凹凸不平的问题。

该代码改编自this answer。我本来会将此问题标记为该问题的重复,但是OP接受了另一个较小的答案。

关于javascript - 我该如何用正则表达式匹配重叠的字符串?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20833295/

10-12 12:19
查看更多