我是在做错什么,还是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);