Que sont les expressions régulières (Regex) ?
Les expressions régulières (Regex) sont un langage de motifs utilisé pour rechercher, valider et traiter du texte.
Avec les regex, vous pouvez :
trouver des fragments de texte spécifiques (par exemple : email, URL, nombres)
valider des formats de données (validation de formulaires)
remplacer et nettoyer du texte
extraire des données structurées à partir de chaînes
Les regex sont largement utilisées en développement, en analyse de données, en SEO et en automatisation.
Que fait l’outil « Regex Tester » ?
Cet outil permet de tester des expressions régulières en temps réel et de voir immédiatement le résultat.
Avec lui, vous pouvez :
vérifier si une chaîne correspond à un motif
afficher toutes les correspondances dans un texte
déboguer des expressions complexes
tester différentes variantes de regex sans écrire de code
Moteurs Regex populaires et leurs différences
Les expressions régulières ne sont pas totalement universelles. La prise en charge de la syntaxe dépend du langage de programmation et du moteur utilisé.
Moteur | Utilisation | Particularités |
|---|
JavaScript (ECMAScript) | Navigateurs, Node.js | Lookbehind limité (selon la version) |
PCRE | PHP, de nombreux outils | L’un des moteurs les plus puissants |
Python (re) | Python | Certaines fonctionnalités de PCRE sont absentes |
Java (Pattern) | Java | Syntaxe stricte |
.NET | C# | Fonctionnalités étendues |
Testez toujours votre regex dans l’environnement cible. Tenez compte des différences de prise en charge du lookbehind et d’Unicode. Pour des solutions multiplateformes, privilégiez une syntaxe plus simple.
Modificateurs (flags) Regex
Les flags sont des modificateurs qui changent la manière dont le motif est interprété. Ils permettent de contrôler la casse, la portée de recherche (une seule ligne ou plusieurs lignes) et l’interprétation des caractères.
Flag | Signification |
|---|
i | Ignore la casse |
g | Recherche globale |
m | Mode multiligne |
s | Dotall (inclut \n dans .) |
u | Unicode |
Caractères spéciaux en Regex
Taper | Symbole | Description |
|---|
Ancres (positions) | ^ | Début de chaîne |
Ancres (positions) | $ | Fin de chaîne |
Ancres (positions) | \b | Limite de mot |
Ancres (positions) | \B | Pas une limite de mot |
Métacaractères | . | Correspond à n’importe quel caractère sauf le saut de ligne (\n) |
Métacaractères | | | Opérateur OU |
Métacaractères | \ | Caractère d’échappement |
Littéraux | a | Caractère « a » |
Littéraux | ab | Chaîne « ab » |
Quantificateurs | * | 0 répétition ou plus |
Quantificateurs | ? | 0 ou 1 répétition |
Quantificateurs | + | 1 répétition ou plus |
Quantificateurs | {5} | Exactement 5 répétitions |
Quantificateurs | {5,} | 5 répétitions ou plus |
Quantificateurs | {5,10} | Entre 5 et 10 répétitions |
Classes de caractères | \s | Espace blanc |
Classes de caractères | \S | Non-espace blanc |
Classes de caractères | \w | Caractère de mot (alphanumérique + underscore) |
Classes de caractères | \W | Caractère non-mot |
Classes de caractères | \d | Chiffre |
Classes de caractères | \D | Caractère non numérique |
Séquences d’échappement | [\b] | Retour arrière (backspace) |
Séquences d’échappement | \c | Caractère de contrôle |
Séquences d’échappement | \n | Saut de ligne |
Séquences d’échappement | \t | Tabulation |
Séquences d’échappement | \r | Retour chariot |
Séquences d’échappement | \ZZZ | Caractère octal |
Séquences d’échappement | \xZZ | Caractère hexadécimal |
Séquences d’échappement | \0 | Caractère nul |
Séquences d’échappement | \v | Tabulation verticale |
Groupes | (xyz) | Groupe capturant |
Groupes | (?:xyz) | Groupe non capturant |
Ensembles et plages | [xyz] | N’importe quel caractère parmi x, y ou z |
Ensembles et plages | [^xyz] | Tout caractère sauf x, y ou z |
Ensembles et plages | [a-q] | Intervalle de a à q |
Ensembles et plages | [0-7] | Intervalle de 0 à 7 |
Motifs de remplacement | $` | Texte avant la correspondance |
Motifs de remplacement | $' | Texte après la correspondance |
Motifs de remplacement | $+ | Dernier groupe capturé |
Motifs de remplacement | $& | Correspondance complète |
Motifs de remplacement | $n | Groupe capturé n (par ex. $1, $2) |
Lookarounds | (?=xyz) | Lookahead positif |
Lookarounds | (?!xyz) | Lookahead négatif |
Lookarounds | (?<=xyz) | Lookbehind positif |
Lookarounds | (?<!xyz) | Lookbehind négatif |
Commentaires | (?#comment) | Commentaire (ignoré par le moteur) |
Regex couramment utilisées
Tâche | Regex |
|---|
Chiffres uniquement | ^\d+$ |
Lettres latines uniquement | ^[A-Za-z]+$ |
Date (DD.MM.YYYY) | \d{2}\.\d{2}\.\d{4} |
Domaine | ^[a-z0-9.-]+\.[a-z]{2,}$ |
URL | https?:\/\/[^\s]+ |
Slug | ^[a-z0-9-]+$ |
Email (basique) | ^[^\s@]+@[^\s@]+\.[^\s@]+$ |
Email (strict) | ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ |
Téléphone (générique) | ^\+?\d{7,15}$ |
Balises HTML | <[^>]+> |
Mot de passe fort | ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).{12,}$ |
UUID | ^[0-9a-fA-F-]{36}$ |
Couleur HEX | ^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ |
IP (IPv4) | ^(\d{1,3}\.){3}\d{1,3}$ |
Adresse MAC | ^([0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}$ |
Erreurs fréquentes avec les regex
Les expressions régulières paraissent souvent simples, mais elles contiennent de nombreuses subtilités. Voici les erreurs les plus courantes qui conduisent à des résultats incorrects.
Erreurs de syntaxe et de logique
Oubli d’échappement : . correspond à n’importe quel caractère, pas à un point littéral → utilisez \.
Mauvaise utilisation des quantificateurs : *, +, {} s’appliquent à l’élément précédent, pas à toute la chaîne
Confusion entre expressions gourmandes et non gourmandes : .* est gourmand → utilisez .*? pour une correspondance minimale
Problèmes de correspondance dans les chaînes
Absence des ancres ^ et $ : sans elles, la regex peut trouver une correspondance n’importe où dans la chaîne
Sensibilité à la casse : "Test" ≠ "test" → utilisez le flag i si nécessaire
Mauvaise gestion des espaces : \s inclut les tabulations, retours à la ligne, etc., pas uniquement l’espace
Erreurs pratiques
Utilisation de \w pour Unicode : dans la plupart des moteurs, \w = [A-Za-z0-9_] (pas de cyrillique, etc.)
Tentative d’analyser des formats complexes (HTML, JSON) avec regex : peu fiable → utilisez des parseurs dédiés
Expressions trop complexes : difficiles à maintenir et à déboguer
Problèmes de performance