注意到Rubular.com和Javascript正则表达式之间存在差异:
'catdogdogcatdog'.match(/cat(dog)/g); // JS returns ['catdog', 'catdog']
我希望两次捕获'狗',但我会两次获得'catdog'。
Rubular按预期捕获“狗”两次:http://rubular.com/r/o7NkBnNs63
这里到底发生了什么?
答案 0 :(得分:5)
不,Rubular还匹配catdog
两次。它也显示捕获组的内容,它捕获dog
两次。
你想要这样的东西:
var myregexp = /cat(dog)/g;
var match = myregexp.exec(subject);
while (match != null) {
dog = match[1]
// do something, Gromit!
match = myregexp.exec(subject);
}