Rubular与javascript正则表达式捕获组

时间:2011-09-26 13:55:41

标签: javascript regex rubular

注意到Rubular.com和Javascript正则表达式之间存在差异:

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

我希望两次捕获'狗',但我会两次获得'catdog'。

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

这里到底发生了什么?

1 个答案:

答案 0 :(得分:5)

不,Rubular还匹配catdog两次。它显示捕获组的内容,它捕获dog两次。

screen shot from rubular

你想要这样的东西:

var myregexp = /cat(dog)/g;
var match = myregexp.exec(subject);
while (match != null) {
    dog = match[1]
    // do something, Gromit!
    match = myregexp.exec(subject);
}