Expression régulière javascript

Duracell2
Invité n'ayant pas de compte PHPfrance

04 déc. 2008, 14:55

Bonjour, j'ai besoin d'un script qui vérifie qu'une string en entrée ne contienne que des caractères autorisés. Si elle contient au moins 1 caractère qui n'est pas autorisé, alors le script doit renvoyer false.

Les caractères autorisés sont : a-z, A-Z, 0-9, ()+,=?./:- ainsi que LF et CR.

Je suppose que le plus facile est de définir une expression régulière pour cela, et utiliser ensuite regexp.test (stringToCheck) .

Malheureusement, je ne sais pas comment exprimer LF et CR (retour chariot) dans mon expression régulière. Pour l'instant, ça donne ça :

var regexp = /[^a-z0-9 ()+,=?./:-]/mgi

Quelqu'un sait-il comment y ajouter LF et CR ?

Merci :wink:

Mammouth du PHP | 2937 Messages

04 déc. 2008, 15:13

Pour ma part, je formulerais l'expression régulière autrement :

Code : Tout sélectionner

var regexp = /^([a-z0-9 ()+,=?./:-]|\r|\n)+$/mi;
et poserais les conditions suivantes :

Code : Tout sélectionner

if (regexp.test ('la chaîne')) { // Instructions pour les chaînes valides } else { // Instructions pour les chaînes invalides }

Duracell2
Invité n'ayant pas de compte PHPfrance

04 déc. 2008, 16:00

Merci, ça me permet d'avancer !

Toutefois, ce n'est pas encore tout à fait juste, car dans ce cas il accepte les caractères non permis dans certaines conditions (genre si ils son tsuivis d'autres caractères etc).

J'ai donc trouvé ue solution alternative, malheureusement pas très propre, mais qui fonctionne :

Code : Tout sélectionner

var regexp = /([a-z0-9 ()+,=?./:-]|\r|\n)*/mi; var string2 = string.replace (regexp, ""); if (string2 = 0) { OK } else { NOK }

Invité
Invité n'ayant pas de compte PHPfrance

04 déc. 2008, 16:02

J'ai oublié d'expliquer le résultat ...

Il remplace donc tous les caractères permis par du vide, SAUF si ils suivent (par ligne) un caractère non permis. Donc, en gros, il me reste les fin de ligne contenant des caractères non permis.
Donc, length>0 si il y a au moins 1 caractère non permis.