TutOs_Urgences

Petit guide sur l’utilisation des expressions régulière dans les formulaires

AVANT TOUT​

Une regex (Expression régulière) est toujours entourée de caractères spéciaux appelés délimiteurs.

Voici la liste des délimiteurs les plus pratiques à utiliser  « /« , « # » ou « @« .Il est plus facile de choisir un délimiteur qui ne soit pas un caractère attendu dans votre champ de saisie, que de l’échapper (cf chapitre correspondant) .

Les options éventuelles sont placées après le second délimiteur. (@Ma regex@Options)

Exemple : @Ma regex@
le champ de saisie doit contenir : Ma regex

Sensibilité à la casse ou pas

Attention, les regex sont naturellement « sensibles à la casse ».

Exemple : @Ma regex@
le champ de saisie doit contenir : Ma regex
Il ne peut contenir : ma regex

Pour les rendre insensibles à la casse, il faut ajouter en option, le « i » après le second délimiteur

 

Exemple : @Ma regex@i
le champ de saisie peut contenir : Ma regex, ma regex, MA REGEX, ….

Utilisation de la fonction "ou"

Pour ajouter une condition « ou » il faut utiliser le « | » (signe pipe)

  • Ctrl + Alt + 6 sur PC
  • ALT + Option + L sur Mac

Exemple : @Ma regex|Ma rolex@
le champ de saisie peut contenir : Ma regex ou Ma rolex

Début et fin de chaîne

Pour indiquer le début d’une chaîne, il faut utiliser le « ^ » (accent circonflexe) 

Exemple : @^Ma regex@
le champ de saisie peut contenir par : Ma regex, Ma regex en magenta
le champ de saisie ne peut pas contenir par : En magenta Ma regex

Pour indiquer la fin d’une chaîne, il faut utiliser le « $ » (dollar) 

Exemple : @Ma regex$@
le champ de saisie peut contenir par : En magenta Ma regex
le champ de saisie ne peut pas contenir par : Ma regex en magenta

Les classes de caractères

Les classes de caractères, sont un ensemble de caractères pouvant convenir, ils sont délimités par  « [ » et « ] » (crochets) 

Exemple : @Ma r[ée]gex@
le champ de saisie peut contenir par : Ma regex, Ma régex

Les intervalles de classe

Il est possible d’autoriser des plages de caractères grâce au symbole «  » (le tiret ou le moins) 

Exemple : [abcdefghijklmnopqrstuvwxyz]  
peut être remplacé par : [a-z]

Exemple : [abcde]  
peut être remplacé par : [a-e]

Exemple : [0123456789]  
peut être remplacé par : [0-9]

Les caractères pris en compte sont ceux situé avant et après le « « 

Exemples : [012348]
peut être remplacé par : [0-48]

Exemple : [abcdefghijklmnopqrstuvwxyz0123456789]   peut être remplacé par : [a-z0-9]

Exemple : [0123456789]  
peut être remplacé par : [0-9]

On peut éviter aussi d’utiliser le « i« 

Exemple : [abcdeABCDE0123]  
peut être remplacé par : [a-eA-E0-3]

 

Pour interdire une plage de caractères (dire qu’une plage ne contient pas les caractères décrits), il faut utiliser le « ^ » après le premier « [« 

Le « ^ » sert aussi à indiquer le début d’une chaîne mais entre « [ ]« , il sert à indiquer que l’on ne veut pas la plage de caractère saisie

Sur le même principe le « $ » sert à indiquer la fin d’une chaine

Exemple : @[^0-9]@  
le champ de saisie ne doit pas contenir un chiffre entre 0 et 9

Exemple : @^[^0-9]@  
le champ de saisie ne doit pas commencer par un chiffre entre 0 et 9

Exemple : @[^0-9]$@  
le champ de saisie ne doit pas se terminer par un chiffre entre 0 et 9

Les quantificateurs

Les quantificateurs sont des symboles qui permettent de dire combien de fois peuvent se répéter un caractère. Ces symboles sont placés juste après le caractère concerné.

Pour signifier qu’une lettre est facultative, on utilise le « ? » (point d’interrogation). Elle peut y être 0 ou 1 fois.

En pratique pour « patient » ou « patients » on note @patients?@

 

Exemple : @regex?@ 
le champ de saisie peut contenir : rege ou regex
le champ de saisie ne peut pas contenir : regexx

Pour signifier qu’une lettre est obligatoire , on utilise le « + » (plus). Elle peut apparaître 1 ou plusieurs fois.

 

Exemples : @regex+@ 
le champ de saisie peut contenir : regex ou regexx
le champ de saisie ne peut pas contenir : rege

Pour signifier qu’une lettre est facultative, on utilise « * » (astérisque) . Elle peut y être 0,1 fois ou plusieurs fois.

 

Exemple : @regex*@  
le champ de saisie peut contenir : rege ou regex ou regexx

 

Les suites de caractéres

Pour une suite de caractères, il faut en plus des quantificateurs, utiliser « ( ) » (parenthèses)

Exemple : @re(gex)*@  
le champ de saisie peut contenir : reg ou regex ou regexgex ou regexgexgex

 

Les répétitions

#bobolatête

Pour délimiter le nombre de répétitions, il faut utiliser les »{}« (accolades).

Si on met juste un nombre dans une accolade, cela signifie que le caractère (ou le groupe de caractère entre parenthèses) est répéter exactement le nombre de fois renseigné.

Exemple : @reg(ex)2@ 
le champ de saisie peut contenir : regexex

Si on met sépare deux chiffres par une « , » (virgule) , cela signifie que le caractère (ou le groupe de caractère entre parenthèses) peut être répété pour les valeurs comprises entre ces deux chiffres {min,max}

 

Exemples : @reg(ex){1,3}@ 
le champ de saisie doit contenir : regex ou regexex ou regexexex 

Si on ne souhaite pas mettre de valeur min ou max, il ne faut pas saisir de valeur avant ou après la « ,« 

On peut remplacer les quantificateurs « $ », « + » et « ? » par des accolades

  • « ? » revient à écrire {0,1} ; ou {,1}
  • « + » revient à écrire {1,}
  • « * » revient à écrire {0,}.

Exemple : @reg(ex){,3}@  
le champ de saisie peut contenir : reg ou regex ou regexex ou regexexex

Exemple : @reg(ex){3,}@  
le champ de saisie peut contenir : regexexex ou regexexexexex ou regexex ou regexexexexexexexex ….

ECHAPPER

Si votre suite de caractères contient un métacaractère décrit dans les points précédents # ! ^ $ ( ) [ ] { } ? + * . \ il faut simplement le notifier (ou l’échapper) en utilisant devant lui « \ » (antislash)

Exemple : @regex\?@
le champ de saisie doit être : regex?

A la différence de : @regex?@  le champ de saisie peut contenir : rege ou regex

Pour les classes (les caractères entre « [ ]« ), il n’est pas nécessaire d’échapper un métacaractère, sauf pour :

« # » (dièse), il faut mettre un « \ » (antislash)

« ] » (crochet de fermeture), il faut mettre un « \ » (antislash)

«  » (tiret ou moins des intervalles de classes ), il faut mettre un « \ » (antislash)

Exemple : @[0-9*\#]@
le champ de saisie peut être  un caractère de 0 à 9 ou * ou # 

Exemple : @[0-9()[\]{}]@ le champ de saisie peut être  un caractère de 0 à 9 ou (, ), [, ], {, }

les abréviations

  • \d
    Indique un chiffre.
    Cela revient exactement à taper [0-9]
  • \D
    Indique ce qui n’est PAS un chiffre.
    Cela revient à taper [^0-9]
  • \w
    Indique un caractère alphanumérique ou un tiret de soulignement.
    Cela correspond à [a-zA-Z0-9_]
  • \W
    Indique ce qui n’est PAS un mot.
    Cela revient à taper [^a-zA-Z0-9_]
  • \n
    Indique une nouvelle ligne (touche entrée)
  • \r
    Indique un retour chariot
  • \s
    Indique un espace blanc
  • \S
    Indique ce qui n’est PAS un espace blanc (\t \n \r)
  •  .
    Indique n’importe quel caractère.
    Il autorise donc tout ! Sauf les touches entrée de \n

Exemple : @^\d{11}$@
le champ de saisie peut être  un caractère de 0 à 9 répété 11 fois sans aucune séparation possible 

Exemple : @^[0-9]{11}$@ idem mais sans abréviation

Exemples

Exemple 1 Numéro de téléphone

\^0[1-8]([-. ]?[0-9]{2}){4}$\

@^0[1-8]([-. ]?[0-9]{2}){4}$@

^0 = Commence par un 0 (zéro)
[1-8] = Suivi d’un chiffre de 1 à 8
:  début d’une répétition
[-. ]? =  Suivi d’un (tiret) d’un . (point) d’un vide (espace) ou de rien
[0-9]{2} = suivi d’un numéro composé de deux chiffres de 0 à 9
) = fin de répétition
{4} : la répétition est reprise 4 fois
$ = fin de chaîne.

Ce qui nous donne possiblement : 04-94-00-20-40 ou 04.94.00.20.40 ou 04 94 00 20 40 ou 0494002040

Ce qui nous donne possiblement : 04-94-00-20-40 ou 04.94.00.20.40 ou 04 94 00 20 40 ou 0494002040 ou +334-94-00-20-40 ou +334.94.00.20.40 ou +334 94 00 20 40 ou +33494002040

Exemple 2 Numéro de téléphone en +33 ou avec 0

Avec la fonction ou en plus (fonction ou = « |« )

@^(0|\+33)([ .-]?[0-9]{2}){5}$@

 

Exemple 3 avec chatGPT et des abréviations

Instruction « réalise moir une expression régulière qui correspond à un numéro de téléphone à 10 chiffres, divisés en 5 groupes de 2 chiffres, pouvant être séparés par des points, des tirets, des espaces ou rien :

@^(?:\d{2}[ .-]?){4}\d{2}$@ 

  • ^ : début de la chaîne
  • (?:\d{2}[ .-]?){4} : quatre groupes de 2 chiffres (\d{2}), chacun pouvant être suivi d’un espace, d’un point ou d’un tiret ([ .-]?). (?: ... ) est un groupe non capturant.
  • \d{2} : les deux derniers chiffres du numéro de téléphone
  • $ : fin de la chaîne