Naprawdę szaleję z tego powodu i już spędziłem nieproporcjonalną ilość czasu, próbując dowiedzieć się, co się tutaj dzieje. Więc proszę, pomóż mi =)
Muszę zrobić dopasowanie RegExp ciągów w JavaScript. Niestety zachowuje się bardzo dziwnie. Ten kod:
var rx = /(cat|dog)/gi;
var w = new Array("I have a cat and a dog too.", "There once was a dog and a cat.", "I have a cat and a dog too.", "There once was a dog and a cat.","I have a cat and a dog too.", "There once was a dog and a cat.","I have a cat and a dog too.", "There once was a dog and a cat.","I have a cat and a dog too.", "There once was a dog and a cat.","I have a cat and a dog too.", "There once was a dog and a cat.","I have a cat and a dog too.", "There once was a dog and a cat.");
for (var i in w) {
var m = null;
m = rx.exec(w[i]);
if(m){
document.writeln("<pre>" + i + "\nINPUT: " + w[i] + "\nMATCHES: " + m.slice(1) + "</pre>");
}else{
document.writeln("<pre>" + i + "\n'" + w[i] + "' FAILED.</pre>");
}
}
Zwraca „kot” i „pies” dla pierwszych dwóch elementów, tak jak powinno, ale potem exec()
zaczynają wracać niektóre wywołania null
. Nie rozumiem dlaczego.
Umieściłem tutaj Fiddle , gdzie możesz uruchomić i edytować kod.
Do tej pory próbowałem tego w Chrome i Firefox.
Twoje zdrowie!
/ Christofer
"I have a cat and a dog too."
, jak się wydaje