Tester et Déboguer des Expressions Régulières
Testez un motif regex et voyez les correspondances, groupes et drapeaux en direct pendant que vous tapez.
Motif et échantillon restent sur votre appareil
Rien à supprimer ensuite
Sûr pour de vrais échantillons de production
Fonctionne dans tout navigateur moderne
Comment ça marche
- 1
Saisissez votre motif
Écrivez-le dans le champ et activez les drapeaux que vous comptez utiliser en production.
- 2
Collez un texte représentatif
Incluez les cas épineux et les chaînes qui ne devraient pas correspondre du tout.
- 3
Lisez correspondances et groupes
Vérifiez ce qui a été trouvé et ce qui a été ignoré avant d’emporter le motif ailleurs.
Pourquoi cet outil
Chaque correspondance surlignée en direct
Voyez ce que le motif attrape réellement pendant que vous l’écrivez, au lieu de le deviner d’après la syntaxe.
Groupes de capture détaillés
Groupes numérotés et nommés listés par correspondance : c’est là que la plupart des motifs se trompent.
Des drapeaux visibles
Global, insensible à la casse, multiligne et dotall affichés explicitement plutôt qu’enfouis dans un délimiteur.
Testez aussi les non-correspondances
Collez les chaînes à rejeter à côté de celles à trouver — c’est la moitié que l’on saute.
Rien n’est envoyé
Le motif et le texte d’essai restent dans votre navigateur ; de vraies lignes de journal n’atteignent aucun serveur.
Gratuit et sans compte
Aucune inscription, aucun filigrane et aucune limite sur la quantité testée.
Un motif qui correspond à vos exemples n’est pas un motif qui fonctionne
Presque tout le monde teste de la même façon : écrire l’expression, coller trois chaînes qu’elle est censée attraper, les voir surlignées, mettre en production. Cela confirme que le motif n’est pas complètement cassé et ne dit rien de la défaillance qui mordra vraiment. La question intéressante n’est pas ce qu’il attrape, mais ce qu’il attrape en plus : l’entrée à laquelle vous n’avez jamais pensé et qui passe, et l’entrée valide qu’il rejette en silence. Un motif de numéro de téléphone qui marche sur quatre exemples rencontrera un indicatif international, un poste ou une espace à un endroit inattendu. La discipline à adopter consiste donc à coller délibérément les chaînes à rejeter, à côté de celles à attraper, et à contrôler les deux listes chaque fois que le motif change.
Certains motifs peuvent bloquer le processus qui les exécute
Voilà la défaillance qui transforme une expression régulière en panne, et elle mérite d’être connue car elle est invisible jusqu’à ce qu’elle survienne. La plupart des moteurs procèdent par retour arrière : quand une branche échoue, ils reculent et en essaient une autre. Avec des quantificateurs imbriqués — un groupe répété qui se répète lui-même, de la forme `(a+)+` — le nombre d’arrangements à tenter croît exponentiellement avec la longueur de l’entrée. Sur une chaîne qui correspond, cela se termine instantanément ; sur une chaîne qui *faillit* correspondre puis échoue à la fin, cela peut durer plus longtemps que l’univers n’a existé. C’est un vecteur de déni de service dès que le motif s’applique à une entrée utilisateur, et cela a mis à terre de grands services : Cloudflare comme Stack Overflow ont publié des post-mortems attribuant une panne mondiale exactement à cela. Si votre motif comporte un quantificateur dans un groupe quantifié, testez-le avec une longue chaîne non correspondante avant qu’il n’approche la production.
Il n’existe pas un seul langage d’expressions régulières
La syntaxe paraît portable et ne l’est pas. JavaScript, PCRE tel qu’employé par PHP et Perl, Python, Java, .NET et les outils POSIX implémentent chacun un dialecte différent, et les motifs circulent entre eux avec des changements de sens silencieux. La recherche arrière est un piège fréquent : présente dans PCRE depuis des décennies, elle n’a atteint JavaScript que récemment, si bien qu’un motif fonctionnant dans votre éditeur peut échouer dans un navigateur. Go et plusieurs autres systèmes utilisent RE2, une conception entièrement différente : elle garantit un temps linéaire, donc le retour arrière catastrophique évoqué plus haut y est impossible, mais elle y parvient en supprimant totalement les références arrière et les assertions d’entourage. La syntaxe des groupes nommés, les échappements de propriétés Unicode et même ce que recouvre `\d` varient. Testez dans le dialecte de déploiement, sans quoi le résultat est : ça passe ici, ça casse là.
Gourmand par défaut, et le point est plus étroit qu’on ne croit
Deux réglages par défaut expliquent une large part des motifs au comportement étrange. Les quantificateurs sont gourmands : `.*` prend tout ce qu’il peut et ne rend que le strict nécessaire, si bien que `<.*>` appliqué à `<a><b>` correspond à toute la chaîne plutôt qu’à la première balise. Ajouter un point d’interrogation le rend paresseux — `<.*?>` — et fait correspondre chaque balise séparément, ce qui est presque toujours l’intention. Le second réglage : le point ne correspond pas à un saut de ligne. Invisible sur des exemples d’une ligne, cela devient un mystère dès que le motif rencontre un document multiligne et s’arrête au premier retour ; le drapeau dotall corrige cela. Une paire voisine mérite d’être distinguée : le drapeau multiligne change le sens de `^` et `$`, les ancrant à chaque ligne plutôt qu’à la chaîne entière, et ne touche pas au point.
Ce à quoi une expression régulière ne sert pas
Le conseil de ne pas analyser du HTML avec une regex est généralement servi comme une blague, et la raison de fond est précise : le HTML s’imbrique à profondeur arbitraire, apparier une balise ouvrante à sa fermante suppose de compter, et une expression régulière n’a pas de mémoire pour compter. Il ne s’agit pas d’écrire un meilleur motif : la classe de langage est inadaptée. Les adresses e-mail échouent autrement. La grammaire du RFC 5322 autorise chaînes entre guillemets, commentaires et caractères insoupçonnés, si bien qu’un motif réellement conforme atteint des milliers de caractères et ne peut toujours pas dire la seule chose qui compte : si l’adresse reçoit du courrier. Règle pratique dans les deux cas : un vrai analyseur pour du balisage structuré, et pour une adresse, vérifier qu’il y a un `@` avec quelque chose de chaque côté, puis envoyer un message de confirmation.
Pourquoi tester en local compte pour ce type de texte
Le motif lui-même est rarement sensible. Ce que vous collez pour le tester l’est généralement, car une expression régulière ne vaut d’être testée que sur une entrée réaliste — c’est-à-dire de vraies lignes de journal avec de vraies adresses dedans, un export de fiches clients que vous cherchez à nettoyer, un échantillon de données de production copié précisément parce que les exemples fabriqués ne révélaient pas le problème. C’est cette matière qui rend le test pertinent, et c’est celle que vous ne choisiriez pas de confier à un tiers. Cet outil exécute la correspondance dans la page et ne transmet ni le motif ni l’échantillon, ce que vous pouvez vérifier dans l’onglet Réseau des outils de développement.
Erreurs courantes à éviter
- Ne tester que des chaînes censées correspondre. La défaillance qui mord, c’est l’entrée imprévue qui passe — collez aussi celles qui doivent être rejetées, à chaque modification du motif.
- Imbriquer un quantificateur dans un groupe quantifié. Des formes comme `(a+)+` reviennent en arrière de façon exponentielle sur une entrée presque conforme : un vecteur de déni de service à l’origine de pannes mondiales documentées.
- Supposer le motif portable. Recherche arrière, groupes nommés et échappements Unicode diffèrent entre JavaScript, PCRE, Python et RE2 — testez dans le dialecte de déploiement.
- Oublier que `.` ne correspond pas à un saut de ligne. Un motif efficace sur une ligne s’arrête au premier retour d’un document ; c’est dotall qu’il vous faut, pas multiligne.
- Analyser du HTML ou valider un e-mail avec une regex. L’imbrication réclame un compteur qu’une regex n’a pas, et un motif conforme ne dit toujours pas si l’adresse reçoit du courrier.
Comparaison
| Critère | Cet outil | Testeurs en ligne | Le panneau de recherche d’un éditeur |
|---|---|---|---|
| Contenu envoyé à un serveur | Jamais | Le plus souvent | Non |
| Groupes de capture détaillés | Oui | Le plus souvent | Rarement |
| Drapeaux affichés explicitement | Oui | Le plus souvent | En partie |
| Fonctionne sans ouvrir de projet | Oui | Oui | Non |
| Compte ou inscription | Pas nécessaire | Parfois exigé | Pas nécessaire |
| Prix | Gratuit | Gratuit / offres payantes | Gratuit / payant |
Fonctionnalités
Surlignage en direct
Correspondances marquées dans le texte d’essai à mesure que le motif change, avec détail au survol.
Groupes nommés et numérotés
Chaque capture listée par correspondance, pour voir quel groupe contient quoi.
Tous les drapeaux courants
Global, insensible à la casse, multiligne, dotall, unicode et collant, chacun activable séparément.
Nombre et positions des correspondances
Combien d’occurrences et où elles commencent, ce qui compte quand on remplace et pas seulement quand on cherche.
Erreurs de syntaxe expliquées
Un crochet non fermé ou un échappement fautif indique le problème au lieu de ne rien faire correspondre en silence.
Supporte les entrées longues
Des fichiers de journal entiers se collent comme sujet de test, sans envoi.
Rien à installer
Pas d’éditeur, pas d’environnement d’exécution, pas de dépendances : tout se passe sur la page web.
Compatible arabe et RTL
Interface complète en huit langues, dont l’arabe de droite à gauche.
Sécurisé par défaut
Servi en HTTPS, sans suivi du contenu ni envoi à un tiers.
Qui l’utilise
Développeurs
Mettre un motif au point sur de vraies données d’exemple avant de le placer dans du code.
Analystes de données
Construire un motif d’extraction pour une colonne désordonnée et voir exactement ce qu’il manque.
Administrateurs système
Vérifier une expression de filtrage de journaux sur de vraies lignes plutôt que sur des lignes inventées.
Qui apprend les expressions régulières
Observer ce que fait un motif à mesure qu’on le modifie, plus rapide que d’en lire la théorie.
Questions Fréquentes
Non. Tout s’exécute localement dans votre navigateur — votre texte n’est jamais envoyé, stocké ni partagé.
Oui — entièrement gratuit, sans compte et sans limite.