Fonction Excel : REGEX.TEST (2/3)
Quantité de caractères
Les quantificateurs permettent de préciser combien de fois un caractère peut apparaître. Pour préciser une quantité ou une plage de quantités, ajoutez des {} après le caractère concerné.
Par exemple :
- {2} : le caractère doit apparaître 2 fois
- {3,} : le caractère doit apparaître 3 fois ou plus
- {1,4} : le caractère doit apparaître entre 1 et 4 fois
La regex "Pois{1,}on" vérifie ici si le texte contient ce mot avec aucun, un ou plusieurs "s" :
=REGEX.TEST(A2;"Pois{1,}on")

Il existe également 3 raccourcis pratiques pour quantifier un caractère :
- * : le caractère doit apparaître 0 fois ou plus (l'équivalent de
{0,}) - + : le caractère doit apparaître 1 fois ou plus (l'équivalent de
{1,}) - ? : le caractère doit apparaître 0 ou 1 fois (l'équivalent de
{0,1})
La regex "Pois+on" est donc identique à la précédente :
=REGEX.TEST(A2;"Pois+on")

Test d'une structure
Pour tester la structure d'un texte (par exemple une référence, une URL, un numéro de téléphone, etc.), vous devrez utiliser plusieurs éléments vus jusque-là dans une seule expression.
Par exemple, pour valider la regex "^XLP-[0-9]{4}-" le texte doit :
- ^XLP- : commencer par "XLP-"
- [0-9]{4} : être suivi par 4 caractères dans la plage allant de 0 à 9
- - : être suivi par un "-"
=REGEX.TEST(A2;"^XLP-[0-9]{4}-")

Caractères spéciaux
Les métacaractères sont des caractères spéciaux qui ont un rôle particulier (vous connaissez déjà ^ $ [ ] | ? * + { }).
Pour annuler l'effet d'un métacaractère et le considérer comme un simple caractère, précédez-le par un \ (sauf lorsque le métacaractère est dans une classe de caractères).
Grâce à \, la regex " \?$" peut vérifier si le texte se termine par " ?" :
=REGEX.TEST(A2;" \?$")

\ ^ $ . [ ] | ( ) ? * + { }.\t équivaut à une tabulation, \r à un retour chariot et \n à un saut de ligne.Raccourcis de classes
Vous le savez maintenant, les classes de caractères permettent de définir les caractères autorisés ou non. Sachez qu'il existe quelques raccourcis bien pratiques pour simplifier cela :
- \d : un chiffre (l'équivalent de
[0-9]) - \D : tout sauf un chiffre (l'équivalent de
[^0-9]) - \w : un caractère alphanumérique ou un "_" (l'équivalent de
[a-zA-Z0-9_], en incluant aussi les lettres Unicode, y compris les caractères accentués) - \W : tout sauf un caractère alphanumérique ou un "_" (l'équivalent de
[^a-zA-Z0-9_], en excluant aussi les lettres Unicode, y compris les caractères accentués) - \s : un caractère blanc, autrement dit, un espace, un saut de ligne, un retour chariot ou une tabulation
[ \n\r\t] - \S : tout sauf un caractère blanc (l'équivalent de
[^ \n\r\t]) - \b : une frontière de mot (début ou fin d'un mot), entre un caractère
\wet un\W - . : n'importe quel caractère sauf le saut de ligne (l'équivalent de
[^\n])
La regex "^[A-Z]{2}.\w{4}$" vérifie ici si le texte commence par 2 caractères de la plage A-Z, suivi de n'importe quel caractère (sauf le saut de ligne), suivi (et se termine par) 4 caractères alphanumériques :
=REGEX.TEST(A2;"^[A-Z]{2}.\w{4}$")

Recherche en ignorant la casse
Pour rechercher le mot "excel" en ne tenant pas compte des majuscules ou des minuscules, ajoutez (?i) en début de regex "(?i)excel" :
=REGEX.TEST(A2;"(?i)excel")

Ou, plus simple encore, vous pouvez entrer directement la valeur 1 en troisième argument de la fonction REGEX.TEST :
=REGEX.TEST(A2;"excel";1)

Test d'une adresse email
Une regex pour tester la validité d'une adresse email (en version simplifiée) pourrait ressembler à "^[a-z0-9_.-]+@[a-z0-9_.-]{2,}\.[a-z]{2,}$".
Pour valider cette regex le texte doit :
- ^[a-z0-9_.-]+ : commencer par 1 ou plusieurs lettres en minuscule ou chiffres ou "_" ou "." ou "-"
- @ : être suivi par "@"
- [a-z0-9_.-]{2,} : être suivi par 2 ou plusieurs lettres en minuscule ou chiffres ou "_" ou "." ou "-"
- \. : être suivi par un point
- [a-z]{2,}$ : être suivi (et se terminer par) par 2 caractères ou plus de la plage a-z
=REGEX.TEST(A2;"^[a-z0-9_.-]+@[a-z0-9_.-]{2,}\.[a-z]{2,}$")

\w n'est pas utilisé ici à la place de [a-zA-Z0-9_] car \w comprend aussi les caractères accentués, ce qui n'est pas souhaitable ici.