我是在做错什么,还是Google Chromes是错?
使用非捕获和捕获组的效果与不使用非捕获和捕获组的效果相同。

RegExr显示第一个预期结果。 http://regexr.com?30mjo

var text = 'startdate: 123456, enddate: 789012';
var unix = text.match(/(?:start|end)date: (\d+)/g);
console.log(unix);


实际结果

["startdate: 123456", "enddate: 789012"]


预期结果

["123456", "789012"] or
["startdate: 123456", "123456", "enddate: 789012", "789012"]

最佳答案

看来规格说明它应该以这种方式工作。

相关行是

4. Let matchStr be the result of calling the [[Get]] internal method of result withargument "0"

the ecmascript spec的146页上,其中result是您从调用exec返回的数组。

除了手动调用exec并按以下方式收集结果外,我一直无法找到一种方法来完成这项工作:

var regex = /(?:start|end)date: (\d+)/g;
var text = 'startdate: 123456, enddate: 789012';

var result;
var unix = [];

while(result = regex.exec(text)){
    unix.push(result[1]);
}

console.log(unix);

09-16 13:58