Rubular与javascript正则表达式捕获组

Rox*_*cus 1 javascript regex rubular

注意到Rubular.com和Javascript正则表达式之间的区别:

'catdogdogcatdog'.match(/cat(dog)/g);  // JS returns ['catdog', 'catdog']  
Run Code Online (Sandbox Code Playgroud)

我期望两次捕获'狗',但我得到'catdog'两次.

Rubular按预期捕获"狗"两次:http://rubular.com/r/o7NkBnNs63

这到底发生了什么?

Tim*_*ker 5

不,Rubular也匹配catdog两次.它还会 显示捕获组的内容,该组捕获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);
}
Run Code Online (Sandbox Code Playgroud)