Testeur d'Expressions Régulières
Testez vos expressions régulières en direct : correspondances, groupes de capture et remplacement, avec 15 motifs prêts à l’emploi.
Testeur de regex - tester une expression régulière en ligne en direct
Écrire une expression régulière relève de la devinette tant qu'on ne voit pas ce qu'elle capture. Ce testeur de regex gratuit exécute votre motif sur votre propre texte d'exemple au fil de la frappe et surligne chaque correspondance : vous trouvez l'erreur en quelques secondes au lieu de livrer une règle de validation cassée.
Saisissez le motif dans un champ, les drapeaux dans le suivant, puis collez en dessous le texte à tester. Les correspondances se mettent à jour immédiatement, et un motif invalide est signalé tout de suite au lieu d'échouer en silence.
À quoi sert vraiment un testeur de regex
La plupart des bugs de regex n'ont rien d'exotique : le motif capture trop, capture trop peu, ou fonctionne sur l'unique exemple que vous aviez en tête et échoue sur le deuxième. Un testeur rend ce comportement invisible observable : collez cinq entrées réalistes, y compris les plus pénibles, et regardez lesquelles s'allument. C'est aussi la façon la plus rapide d'apprendre la syntaxe, puisque vous changez un caractère et voyez aussitôt l'effet.
Comment utiliser ce testeur
- Saisissez le motif sans les barres obliques qui l'encadrent, par exemple
[a-z]+\d{2,4}. - Ajoutez les drapeaux nécessaires dans leur champ, par exemple
gipour une recherche globale insensible à la casse. - Collez un texte d'exemple réaliste dans Texte de test, y compris les cas limites censés échouer.
- Lisez les correspondances surlignées dans le texte et listées sous Correspondances et groupes, ajustez le motif et recommencez jusqu'à ne sélectionner que le texte voulu.
- Vérifiez les groupes de capture affichés avec chaque correspondance, et saisissez un remplacement avec
$1ou$<nom>dans Remplacer par ; le texte réécrit s'affiche sous Résultat du remplacement.
Vous ne savez pas par où commencer ? Le menu Bibliothèque de motifs charge l'un des 15 motifs courants avec ses drapeaux, des adresses e-mail, URL, adresses IPv4, UUID et couleurs hexadécimales jusqu'aux liens Markdown, aux mots répétés et aux espaces superflus en début ou en fin de ligne. Si la zone de test est vide, ou contient encore un exemple précédent, un texte d'exemple arrive avec le motif ; si vous avez collé votre propre texte, il reste en place et le motif s'applique à vos vraies données. Voyez-les comme des points de départ, pas comme des validateurs : le motif d'e-mail, par exemple, est volontairement pragmatique et n'accepte pas toutes les adresses que la norme autorise. Le guide des regex pour e-mail et le guide des nombres, téléphones et adresses IP montrent où ces motifs s'arrêtent.
Groupes de capture et rechercher-remplacer
Mettez une partie du motif entre parenthèses pour la capturer : ce testeur affiche chaque groupe à côté de sa correspondance - numéroté Groupe 1, Groupe 2, etc., ainsi que tout groupe nommé écrit (?<nom>...). C'est ainsi que l'on extrait l'année, un indicatif ou une extension de fichier d'une correspondance au lieu de seulement confirmer qu'elle correspond. Saisissez quelque chose dans le champ Remplacer par pour réécrire les correspondances aussitôt : $1 insère le premier groupe, $<nom> un groupe nommé, $& toute la correspondance, et $$ un signe dollar littéral.
Les drapeaux et leur effet
| Drapeau | Effet | Quand l'utiliser |
|---|---|---|
g | Trouve toutes les correspondances, pas seulement la première | Remplacer ou compter toutes les occurrences |
i | Ignore la casse | Saisie utilisateur, adresses e-mail, étiquettes |
m | ^ et $ valent sur chaque ligne | Travailler ligne par ligne dans un journal ou une liste |
s | . capture aussi le retour à la ligne | Saisir un bloc réparti sur plusieurs lignes |
u | Mode Unicode complet | Emojis, accents et écritures non latines |
y | Collant : ne capture qu'à la position courante | Écrire un analyseur lexical |
Les symboles les plus utilisés
| Symbole | Signification |
|---|---|
\d \w \s | Un chiffre, un caractère de mot, une espace |
. | N'importe quel caractère sauf le saut de ligne, sans le drapeau s |
^ $ | Début et fin de la chaîne, ou de chaque ligne avec m |
* + ? | Zéro ou plus, un ou plus, zéro ou un |
{2,5} | Entre deux et cinq répétitions |
[abc] [^abc] | L'un de ces caractères, ou tout sauf ceux-ci |
(...) (?:...) | Groupe capturant, groupe non capturant |
\b | Frontière de mot - la solution pour ne capturer que des mots entiers |
Ce que l'on écrit avec des regex
- Valider adresses e-mail, numéros de téléphone, codes postaux et numéros d'identité dans les formulaires.
- Extraire adresses IP, codes de statut, horodatages ou identifiants d'utilisateur depuis des journaux.
- Chercher-remplacer dans tout un projet et réaliser des refactorisations que l'éditeur ne peut pas faire littéralement.
- Règles de routage et de redirection dans un framework, un serveur web ou un CDN.
- Nettoyer des données importées ou extraites avant leur arrivée en base.
- Appliquer des règles de composition de mot de passe côté client.
Les erreurs qui coûtent le plus de temps
- Quantificateurs gourmands.
.*file jusqu'au bout de la ligne. Utilisez.*?ou une classe négative comme[^"]*pour s'arrêter plus tôt. - Métacaractères non échappés. Un point, un plus, un point d'interrogation ou une barre littérale exige un antislash devant.
- Oublier le drapeau
gpuis s'étonner que seule la première occurrence ait changé. - Retour arrière catastrophique. Des quantificateurs imbriqués comme
(a+)+peuvent bloquer sur une longue entrée sans correspondance. - Motifs d'e-mail trop stricts. Les vraies adresses contiennent des plus, des points et des caractères internationaux : restez souple et confirmez par e-mail.
- Vouloir analyser du HTML. Pour des structures imbriquées, utilisez un parseur : une regex ne sait pas compter les balises.
Note sur les dialectes de regex
Ce testeur utilise le moteur JavaScript de votre navigateur, ce qui est la bonne cible si le motif doit tourner dans une page web, dans Node.js ou dans un schéma JSON. PCRE, Python, Go et PostgreSQL diffèrent sur des détails comme la prise en charge du lookbehind, la syntaxe des groupes nommés et les propriétés Unicode. Testez le motif dans l'environnement où il s'exécutera réellement avant de vous y fier.
Rien de ce que vous collez n'est envoyé
Le motif et votre texte de test restent dans le navigateur. C'est important, car les données de test sont souvent de vraies données - extraits de journaux, fiches clients, e-mails d'exemple - et rien de tout cela ne devrait finir sur le serveur d'un tiers.
Le même motif en Python, Java, C#, PHP et Go
Quand un motif fonctionne ici, il passe presque toujours dans un autre langage en ne changeant que l'enveloppe. Ce qui pose vraiment problème, c'est l'échappement des barres obliques inverses dans les littéraux de chaîne et les fonctionnalités que chaque moteur propose.
| Langage | Tester une correspondance | Attention à |
|---|---|---|
| Python | re.search(r'\d{4}', text) | Utilisez des chaînes brutes ; les groupes nommés s'écrivent (?P<nom>...) |
| Java | Pattern.compile("\\d{4}").matcher(text).find() | Doublez les barres obliques inverses ; matches() exige que toute la chaîne corresponde |
| C# / .NET | Regex.IsMatch(text, @"\d{4}") | Les chaînes verbatim avec @ évitent le double échappement |
| PHP | preg_match('/\d{4}/', $text) | PCRE : les délimiteurs sont obligatoires, ajoutez u pour l'UTF-8 |
| Go | regexp.MustCompile(`\d{4}`).MatchString(text) | Moteur RE2 : ni lookbehind ni références arrière |
Outils complémentaires
Les motifs travaillent presque toujours sur du texte venu d'ailleurs. Mettez en forme une charge utile avec le formateur JSON, décodez une valeur échappée avec le décodeur d'URL, lisez un jeton avec le décodeur JWT et convertissez les valeurs epoch trouvées avec le convertisseur de timestamp.