1

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

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

我希望能捕捉到两次“狗”,但我却得到了两次“猫狗”。

Rubular 捕获“狗”的次数是预期的两倍:http ://rubular.com/r/o7NkBnNs63

这里到底发生了什么?

4

1 回答 1

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);
}
于 2011-09-26T14:07:11.330 回答