Noticed a difference between what Rubular.com and Javascript regexes:
'catdogdogcatdog'.match(/cat(dog)/g); // JS returns ['catdog', 'catdog']
I expected to capture 'dog' twice but instead I get 'catdog' twice.
Rubular captures 'dog' twice as expected: http://rubular.com/r/o7NkBnNs63
What is going on here exactly?
No, Rubular also matches catdog
twice. It also shows you the contents of the capturing group, which captured dog
twice.
You want something like this:
var myregexp = /cat(dog)/g;
var match = myregexp.exec(subject);
while (match != null) {
dog = match[1]
// do something, Gromit!
match = myregexp.exec(subject);
}