J'ai hérité de cette regex javascript d'un autre développeur et maintenant, même si rien n'a changé, il ne semble pas correspondre au texte requis. Voici la regex:Pourquoi l'écriture régulière échoue-t-elle lorsque l'entrée contient un saut de ligne?
/^.*(already (active|exists|registered)).*$/i
je en ai besoin pour correspondre à tout texte qui ressemble à
choses stuff existe déjà plus de choses etc
Il semble parfaitement bien pour moi, il ne cherche ces deux mots ensemble et devrait en théorie ignorer le reste de la chaîne. Dans mon scénario, je vérifie le texte comme celui-ci
var cardUsedRE = /^.*(already (active|exists|registered)).*$/i;
if(cardUsedRE.test(responseText)){
mdiv.className = 'userError';
mdiv.innerHTML = 'The card # has already been registered';
document.getElementById('cardErrMsg').innerHTML = arrowGif;
}
Je suis dans ce entrai par Firebug et je l'ai vu ne parviennent pas à tester cette chaîne:
> Error: <detail>Card number already registered for CLP.\n</detail>
Am I Il manque quelque chose? Quel est le problème probable avec cela?
'.' ne correspondra pas * à une nouvelle ligne par défaut. En outre, "" est probablement mieux écrit que "\ s +" –
Pas sûr si elle est liée, mais il semble que votre javascript a une faute de frappe sur la ligne avec mdiv.innerHTML = ... – JayC
Je suis également d'accord avec pst. Je ne sais pas pourquoi vous avez même les bits ^. * Et. * $ À moins que ce soit un rappel pour ancrer au début et à la fin quand toute la chaîne doit correspondre à quelque chose. – JayC