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