Testeur Regex

Tester les expressions régulières en direct

Motif regex
1
2
Traite localement dans votre navigateur
Comprendre Expressions regulieres
TL;DR

Les expressions regulieres (regex) sont des motifs qui correspondent a du texte. Utilisees partout -- validation de saisie, recherche/remplacement, analyse de journaux. Syntaxe dense mais accessible.

Qu’est-ce qu’une regex ?

Une expression reguliere (regex ou regexp) est une sequence de caracteres qui definit un motif de recherche. Les motifs regex decrivent a quoi le texte ressemble plutot que ce qu’il signifie — ils correspondent a des sequences de caracteres, pas a une semantique.

Les expressions regulieres sont l’un des outils les plus puissants et les plus repandus en programmation. Elles apparaissent dans pratiquement tous les langages de programmation (JavaScript, Python, Java, Go, Rust), tous les editeurs de texte (VS Code, Vim, Sublime), tous les outils en ligne de commande (grep, sed, awk) et la plupart des bases de donnees (PostgreSQL, MySQL). Apprendre les regex est un multiplicateur de force — la meme syntaxe fonctionne quasiment partout.

Le compromis est la lisibilite. Les motifs regex sont denses et peuvent sembler cryptiques au premier coup d’oeil. Un motif comme ^(?=.*[A-Z])(?=.*\d)[A-Za-z\d@$!%*?&]{8,}$ est parfaitement logique une fois la syntaxe maitrisee, mais impenetrable sinon. La cle est d’apprendre les briques de base une par une.

Concepts fondamentaux

Classes de caracteres

Une classe de caracteres correspond a n’importe quel caractere unique d’un ensemble defini :

  • [abc] — Correspond a a, b ou c
  • [a-z] — Correspond a toute lettre minuscule
  • [^abc] — Correspond a tout caractere sauf a, b ou c
  • . — Correspond a tout caractere sauf le saut de ligne

Classes abregees

AbreviationEquivalentSignification
\d[0-9]Tout chiffre
\D[^0-9]Tout non-chiffre
\w[a-zA-Z0-9_]Tout caractere de mot
\W[^a-zA-Z0-9_]Tout caractere non-mot
\s[ \t\n\r\f\v]Tout espace blanc
\S[^ \t\n\r\f\v]Tout non-espace blanc

Quantificateurs

Les quantificateurs specifient combien de fois un motif doit se repeter :

QuantificateurSignificationExemple
*0 ou plusa* correspond a "", "a", "aaa"
+1 ou plusa+ correspond a "a", "aaa" mais pas ""
?0 ou 1a? correspond a "" ou "a"
{n}Exactement na{3} correspond a "aaa"
{n,m}Entre n et ma{2,4} correspond a "aa", "aaa", "aaaa"
{n,}n ou plusa{2,} correspond a "aa", "aaa", …

Ancres

Les ancres correspondent a des positions, pas a des caracteres :

  • ^ — Debut de chaine (ou de ligne en mode multiligne)
  • $ — Fin de chaine (ou de ligne en mode multiligne)
  • \b — Limite de mot (entre \w et \W)

Groupes et alternance

  • (abc) — Groupe capturant : correspond a abc et le capture pour les references arriere
  • (?:abc) — Groupe non capturant : correspond a abc sans capturer
  • a|b — Alternance : correspond a a ou b

Aide-memoire regex

SyntaxeNomDescription
.PointTout caractere (sauf saut de ligne)
\dChiffre[0-9]
\wMot[a-zA-Z0-9_]
\sEspaceEspace, tabulation, saut de ligne
*Etoile0 ou plus (gourmand)
+Plus1 ou plus (gourmand)
?Interrogation0 ou 1 (optionnel)
{n,m}PlageEntre n et m repetitions
()GroupeGroupe de capture
[]ClasseClasse de caracteres
^AccentDebut de chaine/ligne
$DollarFin de chaine/ligne
|BarreAlternance (OU)
(?=)Assertion avantVerifie ce qui suit
(?<=)Assertion arriereVerifie ce qui precede

Assertions avant et arriere

Les assertions avant (lookahead) et arriere (lookbehind) sont des assertions de largeur nulle — elles verifient si un motif existe avant ou apres la position courante sans consommer de caracteres.

Anatomy of an Email Regex The regex pattern for email validation decomposed into labeled segments: local part, at sign, domain, dot, and TLD. Email Regex Anatomy ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ ^ Start of string [a-zA-Z0-9._%+-]+ Local part: letters, digits, dots, specials (1 or more) @ Literal @ symbol [a-zA-Z0-9.-]+ Domain: letters, digits, dots, hyphens (1 or more) \. Escaped literal dot [a-zA-Z]{2,} TLD: letters only (2 or more chars) $ End of string Match: user.name+tag@sub.example.com user.name+tag = local | sub.example = domain | com = TLD No match: user@@example..com Double @ and consecutive dots violate the pattern

L’assertion avant positive (?=...) verifie que ce qui suit correspond a un motif. Par exemple, \d+(?= USD) correspond aux chiffres uniquement s’ils sont suivis de USD — il correspond a 100 dans “100 USD” mais pas dans “100 EUR”.

L’assertion avant negative (?!...) verifie que ce qui suit ne correspond pas. \d+(?! USD) correspond aux chiffres non suivis de USD.

L’assertion arriere positive (?<=...) verifie que ce qui precede correspond. (?<=\$)\d+ correspond aux chiffres precedes de $ — il correspond a 50 dans “$50” mais pas dans “50”.

L’assertion arriere negative (?<!...) verifie que ce qui precede ne correspond pas.

Les assertions sont de largeur nulle — elles verifient le contexte sans consommer de caracteres, de sorte que le texte correspondant n’inclut pas le motif de l’assertion lui-meme.

Motifs courants

Voici des motifs eprouves pour les taches de validation frequentes :

  • Email (basique) : ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
  • URL : https?://[^\s/$.?#].[^\s]*
  • IPv4 : ^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$
  • Date (AAAA-MM-JJ) : ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$
  • Telephone (international) : ^\+?[1-9]\d{1,14}$
  • Couleur hexadecimale : ^#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$

Cas d’utilisation courants

  • Validation de saisie : Verifier que les champs de formulaire contiennent des emails, numeros de telephone, codes postaux ou identifiants valides avant soumission
  • Recherche et remplacement : Trouver et transformer des motifs dans des bases de code — renommer des variables, mettre a jour des imports, reformater des donnees
  • Analyse de journaux : Extraire des horodatages, adresses IP, codes d’erreur et traces de pile a partir de fichiers de journaux non structures
  • Extraction de donnees : Extraire des donnees structurees a partir de texte semi-structure comme les emails, PDF ou HTML
  • Routage d’URL : Les frameworks web utilisent des motifs regex pour associer les URL aux fonctions de traitement

Essayez ces exemples

Correspondance regex d'email Valide

Ce motif correspond aux adresses email standard comme user@example.com. Il verifie la partie locale (lettres, chiffres, points, underscores), un symbole @, un nom de domaine et un TLD d'au moins 2 caracteres.

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
Email invalide (pas de correspondance) Invalide

Cette chaine contient un double @ et des points consecutifs, que la regex d'email rejette. Le motif exige exactement un @ et n'autorise pas les points consecutifs dans le domaine.

user@@example..com