Aide-mémoire regex

La syntaxe des expressions régulières en tableaux : symboles, classes, quantificateurs, groupes, drapeaux et motifs prêts à copier.

Une expression régulière décrit un motif de texte : elle sert à chercher, valider ou extraire. Les tableaux ci-dessous rassemblent la syntaxe utile au quotidien, dans la variante JavaScript — celle du navigateur, de Node.js et du testeur de regex de ce site, où chaque motif de cette page peut être essayé immédiatement sur votre propre texte.

Métacaractères

Ces caractères ont un sens spécial. Pour les chercher littéralement, précédez-les d'une barre oblique inverse.

SymboleSignification
.N'importe quel caractère, sauf un saut de ligne — sauf si le drapeau s est actif
|Alternative : chat|chien correspond à l'un ou à l'autre
\Échappe le caractère suivant : \. correspond à un point littéral, \\ à une barre oblique inverse
( )Groupe de capture : délimite une portion et la restitue séparément
[ ]Classe de caractères : un seul caractère parmi ceux listés
{ }Quantificateur explicite : {3}, {2,5}, {2,}
* + ?Quantificateurs : 0 ou plus, 1 ou plus, 0 ou 1
^ $Ancres de début et de fin

Classes de caractères

ClasseCorrespond à
[abc]Un caractère parmi a, b ou c
[^abc]Un caractère qui n'est ni a, ni b, ni c
[a-z]Un caractère dans l'intervalle a à z (les accents ne sont pas inclus)
[a-zA-Z0-9]Intervalles cumulés dans une même classe
\dUn chiffre — équivalent strict de [0-9]
\DTout sauf un chiffre
\wUne lettre latine non accentuée, un chiffre ou _ — équivalent de [A-Za-z0-9_]. é et ç n'en font pas partie
\WTout sauf un caractère de mot
\sUne espace, une tabulation, un saut de ligne, un retour chariot ou une espace insécable
\STout sauf une espace au sens large
\t \n \rTabulation, saut de ligne, retour chariot
\p{L}Une lettre de n'importe quelle écriture, accents compris. Exige le drapeau u en JavaScript

Quantificateurs

Un quantificateur porte sur l'élément qui le précède : un caractère, une classe ou un groupe. Il est gourmand par défaut, paresseux si on lui accole un point d'interrogation.

NotationRépétitions
*0 fois ou plus
+1 fois ou plus
?0 ou 1 fois : rend l'élément optionnel
{3}Exactement 3 fois
{2,5}Entre 2 et 5 fois
{2,}Au moins 2 fois, sans limite haute
*? +? ?? {2,5}?Version paresseuse : s'arrête à la correspondance la plus courte possible au lieu de la plus longue

Ancres

Une ancre ne consomme aucun caractère : elle décrit une position dans le texte.

AncrePosition
^Début du texte ; début de chaque ligne si le drapeau m est actif
$Fin du texte ; fin de chaque ligne si le drapeau m est actif
\bFrontière de mot : position entre un caractère \w et un caractère qui n'en est pas un
\BToute position qui n'est pas une frontière de mot

Groupes et assertions

SyntaxeRôle
(abc)Groupe capturant, numéroté de gauche à droite selon la parenthèse ouvrante
(?:abc)Groupe non capturant : regroupe pour appliquer un quantificateur, sans occuper de numéro
(?<nom>abc)Groupe nommé, relu ensuite par son nom plutôt que par son numéro
\1Référence arrière : rappelle le contenu déjà capturé par le groupe 1
(?=abc)Assertion avant positive : la suite doit être abc, qui n'est pas consommé par la correspondance
(?!abc)Assertion avant négative : la suite ne doit pas être abc
(?<=abc)Assertion arrière positive : ce qui précède doit être abc
(?<!abc)Assertion arrière négative : ce qui précède ne doit pas être abc

Drapeaux

Les drapeaux modifient le comportement global du moteur. Le testeur du site expose les quatre premiers ; les suivants existent en JavaScript mais ne sont pas activables dans l'outil.

DrapeauEffetTesteur
gGlobal : parcourt tout le texte au lieu de s'arrêter à la première correspondanceoui
iInsensible à la casse : A correspond à aoui
mMultiligne : ^ et $ s'appliquent à chaque ligneoui
sDotall : le point capture aussi les sauts de ligneoui
uUnicode : active \p{…} et le traitement correct des caractères hors du plan de basenon
ySticky : la correspondance doit démarrer exactement à lastIndexnon
dIndices : expose la position de début et de fin de chaque groupenon

Motifs prêts à l'emploi

Chaque motif est accompagné de ses limites. Aucune de ces expressions ne remplace une validation métier : une regex décrit une forme, pas une vérité.

Adresse e-mail

[^\s@]+@[^\s@]+\.[A-Za-z]{2,}

Filtre pragmatique, pas une validation. Il accepte des adresses syntaxiquement invalides et refuse des adresses légales mais exotiques. Le seul test fiable reste l'envoi d'un e-mail de confirmation.

URL http(s)

https?://[^\s"'<>]+

Capture jusqu'au premier espace, guillemet ou chevron. La ponctuation de fin de phrase collée à l'URL est incluse dans la correspondance.

Date jj/mm/aaaa

\b(0?[1-9]|[12]\d|3[01])/(0?[1-9]|1[0-2])/\d{4}\b

Vérifie la forme, pas l'existence : 31/02/2026 correspond quand même. Le contrôle du calendrier appartient au code, pas à la regex.

Code postal français

\b\d{5}\b

Cinq chiffres isolés. Correspond aussi à 99999, qui n'est attribué à aucune commune : seule une base officielle permet de trancher.

Téléphone français

\b0[1-9](?:[ .-]?\d{2}){4}\b

Format national à dix chiffres, séparateurs espace, point ou tiret facultatifs. Ne couvre ni la forme internationale +33, ni les numéros courts à quatre chiffres.

IBAN (forme générale)

\b[A-Z]{2}\d{2}[A-Z0-9]{11,30}\b

Contrôle uniquement la silhouette : deux lettres de pays, deux chiffres de clé, puis l'identifiant national. Ne vérifie ni la longueur exacte du pays, ni la clé modulo 97 — deux opérations qui exigent du code.

Couleur hexadécimale

#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})\b

Notations courte et longue. Exclut les variantes à 4 et 8 chiffres qui portent le canal alpha.

Espaces multiples

\s{2,}

Utile en remplacement, pour normaliser un texte en une seule espace. Attention : les sauts de ligne consécutifs sont eux aussi de la classe \s et seront écrasés.

Pour vérifier un de ces motifs sur vos propres données, ouvrez le testeur de regex : tout s'exécute dans le navigateur, rien n'est envoyé.

Questions fréquentes

Le tronc commun — métacaractères, classes, quantificateurs, groupes, ancres — se transpose sans effort entre JavaScript, Python, PHP, Java ou grep -E. Les divergences portent sur les points avancés : syntaxe des groupes nommés, disponibilité des assertions arrière, drapeaux, gestion de l'Unicode. Les motifs listés ici sont écrits en syntaxe JavaScript, celle du testeur du site.

Parce que \w est défini comme [A-Za-z0-9_] : é, ç, à ou ñ n'en font pas partie. Pour couvrir toutes les écritures, utilisez \p{L} avec le drapeau u en JavaScript, ou ajoutez explicitement les caractères voulus dans une classe, par exemple [A-Za-zÀ-ÿ].

Par défaut un quantificateur est gourmand : il consomme le plus de caractères possible, puis revient en arrière si nécessaire. Sur <b>gras</b>, le motif <.+> capture toute la chaîne. Ajoutez un point d'interrogation pour le rendre paresseux : <.+?> s'arrête au premier chevron fermant et ne capture que <b>.

Copiez le motif dans le testeur de regex du site, collez votre texte réel en dessous et cochez le drapeau g pour voir toutes les correspondances. Les groupes capturés sont détaillés sous chaque correspondance, et une erreur de syntaxe est signalée avec son message d'origine plutôt que masquée.

Non, pas de façon utile. La grammaire officielle des adresses e-mail autorise des formes que personne n'utilise, et une expression qui la couvrirait entièrement serait illisible et impossible à maintenir. En pratique on filtre grossièrement les fautes de frappe avec un motif simple, puis on confirme l'adresse par un e-mail.

C'est l'explosion combinatoire provoquée par des quantificateurs imbriqués sur un motif comme (a+)+$ : sur une chaîne un peu longue qui ne correspond pas, le moteur teste un nombre exponentiel de découpages et bloque le fil d'exécution. La parade consiste à éviter d'imbriquer les quantificateurs et à préférer des classes de caractères précises à des .* successifs.

Autres outils · Références