J'ai ce comportement dans Chrome (Developer Tools) et Firefox (Firebug). Notez les déclarations de test regex valeurs vrai/faux en alternance:Le test d'expression régulière ne peut pas décider entre vrai et faux (JavaScript)
> var re = /.*?\bbl.*\bgr.*/gi;
undefined
> re
/.*?\\bbl.*\\bgr.*/gi
> re.test("Blue-Green");
true
> re.test("Blue-Green");
false
> re.test("Blue-Green");
true
> re.test("Blue-Green");
false
Cependant, le test de la même regex comme littéral:
> /.*?\bbl.*\bgr.*/gi.test("Blue-Green");
true
> /.*?\bbl.*\bgr.*/gi.test("Blue-Green");
true
> /.*?\bbl.*\bgr.*/gi.test("Blue-Green");
true
> /.*?\bbl.*\bgr.*/gi.test("Blue-Green");
true
Je ne peux pas expliquer cela et cela rend le débogage très difficile. Quelqu'un peut-il expliquer ce comportement?
Funky. Reproduit avec Firefox 3.5.8 et Firebug 1.5.3. Se produit toujours si "Bleu-Vert" est stocké dans une variable et réutilisé. – Darien
J'ai trouvé cela légèrement amusant. Au lieu d'utiliser 'a =! A' pour basculer entre true/false, pourquoi ne pas définir un objet regexp privé et utiliser' regexp.test! ' – Warty
Idem dans Opera-10.52_pre6317 – ZyX