Я серьезно схожу с ума по этому поводу, и я уже потратил непропорциональное количество времени на попытку выяснить, что происходит здесь. Поэтому, пожалуйста, дайте мне руку =)
Мне нужно выполнить некоторое соответствие RegExp строк в JavaScript. К сожалению, это ведет себя очень странно. Этот код:
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>");
}
}
Возвращает "cat" и "dog" для первых двух элементов, как и должно быть, но затем некоторые exec()
-calls начинают возвращать null
. Я не понимаю, почему.
Я разместил здесь Fiddle где вы можете запускать и редактировать код.
И пока я пробовал это в Chrome и Firefox.
Ура!
/Christofer