Я серйозно божеволію з цього приводу, і я вже витратив непропорційно багато часу, намагаючись з'ясувати, що тут відбувається. Тож прошу подати мені руку =)
Мені потрібно виконати збіг рядків у 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()-виклики починають повертатися null. Я не розумію чому.
Я розмістив тут скрипку , де ви можете запустити та редагувати код.
І до цього часу я пробував це у Chrome та Firefox.
На здоров’я!
/ Христофер
"I have a cat and a dog too.", здається