我怎样才能获得正则表达式来查找javascript中的每个匹配项?

Nic*_*ick 6 javascript regex

如果我运行这个:

'121'.match(/[0-9]{2}/gi)
Run Code Online (Sandbox Code Playgroud)

我得到一个结果的数组:

['12']
Run Code Online (Sandbox Code Playgroud)

即使它们重叠,我怎样才能让它返回所有结果?我希望结果如下:

['12', '21']
Run Code Online (Sandbox Code Playgroud)

编辑:或者更好的例子是:

'1234567'.match(...);
Run Code Online (Sandbox Code Playgroud)

应该给我一个数组

[12,23,34,45,56,67]

小智 7

这适用于大多数pcre引擎.
捕获2,消耗1.

/(?=(\d\d))\d/g

我是javascript的新手.这有效:

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

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

console.log(results);
Run Code Online (Sandbox Code Playgroud)

产量:12,23,34,45,56,67


jan*_*cha 3

这不会按照你想要的方式工作。

当您指定模式时[0-9]{2}match()查找第一次出现的两位数字,然后从该位置继续搜索。由于字符串长度为3,显然它不会找到另一个匹配项。

您应该使用不同的算法来查找所有两位数。我建议使用您的第一场比赛的组合,并使用以下正则表达式再做一次

/[0-9]([0-9]{2})/并结合第一轮和第二轮的组。