TUTORIELS 
8 expressions rationnelles utiles
Assortis d'exemples en JavaScript, les motifs essentiels pour se sortir d'impasses courantes.  (27 novembre 2003)
 
Discutez en sur les forums
Parce qu'il est le plus souvent inutile de "réinventer la roue" (sauf en phase d'apprentissage, bien sûr), nous avons compilé sur cette page un ensemble d'expressions rationnelles les plus susceptibles d'être utiles au quotidien. La plupart des classiques sont là (e-mail, URL...), mais nous avons introduit quelques-uns qui, s'ils ne sont pas si souvent utilisables, peuvent toujours avoir leur place dans votre trousse à outils.

Les exemples sont tous au format JavaScript, étant donné que ce langage est utilisable sur les machines de tous nos lecteurs (sauf peut-être ceux qui utilisent Lynx). Voici un exemple de test JavaScript complet, pour un motif reconnaissant le mot "jdnetdev". Vous pouvez facilement l'adapter à vos propres besoins.
Nous précisons qu'il est plus que recommander de faire ce genre de test coté serveur plutôt que coté client...
Dans JavaScript, les expressions rationnelles commencent et terminent avec le caractère /. Par exemple, dans notre fichier source, le motif utilisé est /^jdnetdev$/. Pour simplifier la compréhension des motifs suivants, nous avons sciemment omis ce caractère de début et de fin.

Notez bien que les regexp sont souvent une affaire de goût : celles que nous vous donnons ici ne sont pas toujours complètes - elle ne prennent pas forcément en compte tous les cas possibles - mais devrait vous permettre de vous sortir de la plupart des cas. (Merci Didier pour nous l'avoir signalé, ainsi que certaines corrections).

1) Reconnaître une chaîne de caractères non-numériques
Pour être sûr qu'un prénom ne comporte pas de chiffres...

Motif : ^\D+$
Motif : ^[A-Za-z]+$
Motif : ^[^0-9]+$
Motif pour 6 lettres: ^[A-Za-z]{6}+$

2) Reconnaître une chaîne de caractères numériques
Pour être sûr qu'un numéro de téléphone ne comporte que des chiffres...

Motif : ^\d+$
Motif : ^[0-9]+$
Motif pour un code postal à 5 chiffres : ^[0-9]{5}$

3) Reconnaître une adresse e-mail
Probablement le motif le plus utilisé...

Motif : ^[\w-]+(?:\.[\w-]+)*@(?:[\w-]+\.)+[a-zA-Z]{2,7}$

4) Reconnaître une URL
Motif : ^[\w\-]+\.)+([\w\-]{2,3}$

5) Reconnaître une balise HTML
Permet de vérifier qu'un utilisateur ne tente pas d'entre un code "malicieux" via le formulaire.
Motif : ^<([A-Za-z][A-Za-z0-9]+)[^>]+>(.*?)$

6) Reconnaître une date (format 27/11/2003 ou 27-11-2003)
Il faut appliquer un script final pour tester les cas d'années bisextiles...
Motif : ^\d{1,2}(\/|\-)\d{1,2}(\/|\-)\d{4}$
Motif : ^\d{1,2}(\/|\-)\d{1,2}\1\d{4}$, où \1 fait référence au groupe 1 précédemment créé, c'est-à-dire (\/|\-) - cela nous permet d'être sûr que les deux séparateurs sont les mêmes.
Motif : ^(0?[1-9]|[12]\d|3[0-1])([-/])(0?[1-9]|1[0-2])\2((19|20)\d\d) $

7) Reconnaître
un numéro de sécurité sociale
En voici la structure.
Attention, pour véritablement valider le numéro, il faut vérifier que les deux derniers chiffres (la clé de contrôle) corresponde bien au modulo 97 du reste du numéro, ou à 00. Les regexp ne pouvant se charger d'une telle opération, JavaScript doit entrer en jeu.
Motif : ^[12][0-9]{2}[0-9]{2}[0-9]{2}[0-9]{3}[0-9]{3}[0-9]{2}$
Motif : ^([12]\d\d(0[1-9]|1[0-2])(0[1-9]|[13456789]\d|2[023456789AB])\d\d\d\d\d\d)(\d\d)$

8) Reconnaître un numéro Visa (très incomplet, bien sûr...)
La structure.
Ici encore, une vérification doit être faite via un modulo de 10.
Motif : ^4[0-9]{[12|15]}$
Motif : ^4\d{12}(\d\d\d)?$

Nous vous en proposerons d'autres dans un prochain "pratique"...

 
[ Xavier BorderieJDNet
 
Accueil | Haut de page