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