1

Rubular.com と Javascript の正規表現の違いに気付きました。

'catdogdogcatdog'.match(/cat(dog)/g);  // JS returns ['catdog', 'catdog']  

'dog' を 2 回キャプチャすることを期待していましたが、代わりに 'catdog' を 2 回取得しました。

Rubular は予想どおり 2 回「犬」をキャプチャします: http://rubular.com/r/o7NkBnNs63

ここで正確に何が起こっているのですか?

4

1 に答える 1

5

いいえ、Rubular もcatdog2 回一致します。また、 2 回 キャプチャしたキャプチャ グループの内容も表示されます。dog

rubular のスクリーンショット

次のようなものが必要です。

var myregexp = /cat(dog)/g;
var match = myregexp.exec(subject);
while (match != null) {
    dog = match[1]
    // do something, Gromit!
    match = myregexp.exec(subject);
}
于 2011-09-26T14:07:11.330 に答える