Développeur

Aide-mémoire regex : les expressions régulières expliquées avec des exemples

Les expressions régulières ont l'air obscures, mais elles reposent sur un petit nombre de briques. Cet aide-mémoire explique chacune avec un exemple clair, puis les assemble en motifs que vous utiliserez vraiment.

Réponse rapide

L'essentiel : . n'importe quel caractère, \d un chiffre, \w un caractère de mot, \s un espace, * zéro ou plus, + un ou plus, ? facultatif, {n,m} entre n et m, ^ début, $ fin, [abc] un caractère parmi un ensemble, (…) groupe de capture et a|b l'un ou l'autre. Testez chaque motif dans un testeur de regex avant de l'utiliser dans votre code.

Testeur de regex surlignant quatre dates trouvées par un motif à groupes nommés, avec un aperçu du remplacement
Un motif de date avec groupes nommés, chaque correspondance listée et les dates reformatées en AAAA-MM-JJ. Capture d'écran de notre outil gratuit : Testeur de regex.

Une expression régulière (regex) est un motif qui décrit du texte. On s'en sert pour rechercher, valider et remplacer : trouver tous les e-mails d'un document, vérifier qu'un code postal est valide, ou reformater des dates. Les regex fonctionnent dans presque tous les langages de programmation et dans des outils comme VS Code, Excel et Google Sheets.

Cet aide-mémoire utilise la syntaxe JavaScript, très proche de celle de Python, Java, PHP et de la plupart des autres langages.

Classes de caractères

MotifCorrespond àExemple
.N'importe quel caractère sauf un saut de lignec.t trouve cat, cot, c9t
\dUn chiffre (0–9)\d\d trouve 42
\wLettre, chiffre ou tiret bas\w+ trouve user_1
\sEspace blanc (espace, tabulation, saut de ligne)a\sb trouve « a b »
\D \W \SL'inverse de \d, \w, \s\D+ trouve abc
[abc]Un seul caractère parmi a, b ou cgr[ai]s trouve gras, gris
[^abc]N'importe quel caractère sauf a, b, c[^0-9] trouve tout sauf un chiffre
[a-z]Une plage[A-Za-z] trouve n'importe quelle lettre ASCII

Attention : \w et [a-z] ne couvrent pas les lettres accentuées comme é ou ç. Pour elles, utilisez \p{L} avec le flag u.

Quantificateurs

MotifSignificationExemple
*0 ou plusab*c trouve ac, abc, abbc
+1 ou plusab+c trouve abc, abbc (pas ac)
?0 ou 1 (facultatif)colou?r trouve color, colour
{3}Exactement 3\d{3} trouve 123
{2,4}Entre 2 et 4\d{2,4} trouve 12, 123, 1234
{2,}2 ou plus\w{2,} trouve les mots de 2 caractères ou plus
*? +?Paresseux : le moins possible<.+?> trouve une balise HTML à la fois

Les quantificateurs sont gourmands par défaut : ils prennent le plus de texte possible. Sur le texte <b>gras</b>, le motif <.+> prend toute la chaîne, alors que le motif paresseux <.+?> ne prend que <b>.

Ancres et limites

MotifSignification
^Début du texte (ou de chaque ligne avec le flag m)
$Fin du texte (ou de chaque ligne avec le flag m)
\bLimite de mot : \bchat\b trouve « chat » mais pas « chaton »

Utilisez ^…$ pour valider une saisie entière. Sans ancres, \d+ trouve tranquillement le « 123 » au milieu de « abc123xyz ».

Groupes et alternatives

MotifSignification
(abc)Groupe de capture : mémorise la correspondance en $1, $2…
(?:abc)Groupe non capturant : regroupe sans mémoriser
(?<year>\d{4})Groupe nommé, utilisé comme $<year>
chat|chienSoit chat, soit chien
\1Référence arrière : le même texte que le groupe 1

Lookarounds (assertions avant et arrière)

Les lookarounds vérifient ce qui précède ou suit, sans l'inclure dans la correspondance :

MotifSignificationExemple
(?=…)Suivi de\d+(?=€) trouve 50 dans « 50€ »
(?!…)Non suivi de\d+(?!€)
(?<=…)Précédé de(?<=\$)\d+ trouve 50 dans « $50 »
(?<!…)Non précédé de(?<!-)\d+

Flags

  • g global : trouve toutes les correspondances, pas seulement la première.
  • i insensible à la casse : /bonjour/i trouve « Bonjour ».
  • m multiligne : ^ et $ s'appliquent à chaque ligne.
  • s dotall : . trouve aussi les sauts de ligne.
  • u unicode : active les classes \p{…} comme \p{L}, qui désigne n'importe quelle lettre de n'importe quelle langue.

Échapper les caractères spéciaux

Ces caractères ont un sens particulier : . * + ? ^ $ { } ( ) [ ] | \ /. Pour les trouver tels quels, placez une barre oblique inversée devant. \. trouve un vrai point, donc exemple\.fr ne trouve pas « exempleXfr ».

Motifs pratiques à copier

UsageMotif
Vérification simple d'e-mail^[^\s@]+@[^\s@]+\.[^\s@]+$
URL (http/https)https?:\/\/[^\s/$.?#].[^\s]*
Date (AAAA-MM-JJ)^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$
Heure (24 h HH:MM)^([01]\d|2[0-3]):[0-5]\d$
Couleur hexadécimale^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
Code postal français^\d{5}$
Nombre entier ou décimal^-?\d+(\.\d+)?$
Espaces en trop\s{2,} (à remplacer par un seul espace)
Espaces en fin de ligne[ \t]+$ avec le flag m

Astuce de validation : les regex sont parfaites pour repérer les fautes de frappe, mais elles ne peuvent pas confirmer qu'une adresse e-mail ou une URL existe vraiment. Pour les e-mails, un motif simple plus un e-mail de confirmation valent mieux qu'une regex « parfaite » de 200 caractères.

Comment tester une regex

  1. Ouvrez le testeur de regex gratuit.
  2. Tapez votre motif et activez les flags (g, i, m, s, u).
  3. Collez un texte d'exemple, y compris des cas qui ne doivent pas correspondre.
  4. Vérifiez les correspondances surlignées et les groupes de capture listés pour chacune.
  5. Prévisualisez un remplacement avec $1, $<name> ou $&.
  6. Copiez le motif sous forme de code JavaScript ou Python.

Essai gratuit : Testeur de regex

Testez des expressions régulières en direct, avec les groupes capturés et une bibliothèque de motifs. Fonctionne dans votre navigateur, sans inscription.

Ouvrir l'outil

Exemple : reformater des dates avec un remplacement

Transformez des dates françaises comme 31/12/2026 au format ISO 2026-12-31 :

Motif :        (\d{2})\/(\d{2})\/(\d{4})
Remplacement : $3-$2-$1

Avec des groupes nommés, c'est plus lisible :

Motif :        (?<d>\d{2})\/(?<m>\d{2})\/(?<y>\d{4})
Remplacement : $<y>-$<m>-$<d>

Erreurs fréquentes

  • Oublier d'échapper le point. . trouve n'importe quoi ; utilisez \. pour un point littéral.
  • Oublier les ancres dans les motifs de validation.
  • Abuser de .*. C'est gourmand et lent. Une classe précise comme [^"]* est plus sûre.
  • Le backtracking catastrophique. Des quantificateurs imbriqués comme (a+)+$ peuvent tourner indéfiniment sur certaines entrées et bloquer un programme. Notre testeur exécute les motifs avec une limite de temps et vous avertit.
  • Analyser du HTML avec des regex. Pratique pour une recherche rapide, mais utilisez un vrai analyseur HTML pour tout travail sérieux.

Questions fréquentes

Les regex sont-elles identiques dans tous les langages ?

La syntaxe de base est commune, mais les détails varient. Python utilise (?P<name>…) pour les groupes nommés, et certaines fonctions comme le lookbehind diffèrent selon les moteurs. Testez toujours dans la variante que vous utiliserez.

Que signifie \b ?

Une limite de mot : la position entre un caractère de mot et un caractère qui n'en est pas un. C'est ainsi qu'on ne trouve que des mots entiers.

Comment trouver un saut de ligne ?

Utilisez \n, ou \r?\n pour gérer aussi les fins de ligne Windows.

En résumé

Apprenez les briques de base (classes, quantificateurs, ancres et groupes) et la plupart des motifs deviennent lisibles. Gardez des motifs précis, ancrez-les pour valider et testez-les toujours sur de vrais exemples avant de les mettre en production.

Une information obsolète ou peu claire ? Écrivez à contact@ultratoolsai.com et nous la corrigerons.

Testeur de regex Gratuit · confidentiel · dans votre navigateur Ouvrir l'outil