1

私は何か間違ったことをしていますか、それともGoogle Chromeのせいですか?
非キャプチャグループとキャプチャグループを使用すると、それらを使用しない場合と同じ効果があります。

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

2 に答える 2

1

仕様では、このように機能するはずだと書かれているようです。

関連する行は

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

ecmascript仕様の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);
于 2012-04-18T22:14:34.880 に答える
-1

あなたは何か間違ったことをしています。

これはどうですか?

/((?:start|end)date: (\d+))/g
于 2012-04-18T21:59:09.753 に答える