一尘不染

JavaScript如何用正则表达式匹配重叠的字符串?

javascript

假设我有琴弦

"12345"

如果我.match(/\d{3}/g)只有一场比赛,"123"。我为什么不明白[ "123", "234", "345" ]


阅读 472

收藏
2020-04-25

共1个答案

一尘不染

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

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处理凹凸不平的问题。

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

2020-04-25