Je suis sérieusement en train de devenir fou à cause de cela et j'ai déjà passé un temps disproportionné à essayer de comprendre ce qui se passe ici. Alors s'il vous plaît, donnez-moi un coup de main =)
J'ai besoin de faire une correspondance RegExp de chaînes de caractères en JavaScript. Malheureusement, il se comporte de manière très étrange. Ce code :
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>");
}
}
Renvoie "cat" et "dog" pour les deux premiers éléments, comme il se doit, mais ensuite quelques exec()
-Les appels commencent à être renvoyés null
. Je ne comprends pas pourquoi.
J'ai posté un violon aquí où vous pouvez exécuter et modifier le code.
Jusqu'à présent, j'ai essayé avec Chrome et Firefox.