Testeur de Regex / Éditeur / Visualiseur de Correspondances

Testez, visualisez, remplacez et expliquez des expressions régulières. Tout fonctionne dans votre navigateur

⚙ Moteur : JavaScript RegExp
Motif
Drapeaux:
Insérer:
Exemples:
Texte de test 0 caractères · 0 lignes
Correspondances surlignées
Correspondances: 0
Heure:
Moteur: JS RegExp
Tableau des correspondances
# Correspondance Début Fin Longueur Groupes
Groupes de capture
Syntaxe de remplacement: $1 $2 groupes de capture · $& correspondance complète · $` avant la correspondance · $' après la correspondance · $$ littéral $ · $<name> groupe nommé
Remplacement
Texte source
Résultat
Entrez un motif regex ci-dessus pour voir une explication lisible.

Cliquez sur un exemple pour le charger dans l'onglet Test et l'exécuter automatiquement.

Tous les tests, correspondances, remplacements et analyses de motifs se font dans votre navigateur. Vos textes et motifs ne sont jamais envoyés à un serveur.

Tips

Exécution automatique pour un retour instantané

Avec l'exécution automatique activée, les résultats se mettent à jour pendant que vous tapez. L'outil applique un debounce à l'entrée pour garder l'interface réactive. Pour les textes très volumineux, l'exécution automatique est automatiquement désactivée pour éviter le blocage.

Comprendre les groupes de capture

Les parenthèses () créent des groupes de capture. Cliquez sur une correspondance dans le tableau pour voir ses groupes. Les groupes nommés (?<name>...) rendent la regex plus lisible et le remplacement plus facile avec $<name>.

Éviter le backtracking catastrophique

Les quantificateurs imbriqués comme (a+)+ ou (a|a)*b peuvent causer un temps d'exécution exponentiel. Gardez les motifs simples, utilisez des constructions atomiques quand c'est possible et testez avec des entrées limites.

Différences du moteur JavaScript

Cet outil utilise JavaScript RegExp. Certaines fonctionnalités comme les quantificateurs possessifs et les groupes atomiques ne sont pas disponibles. Le lookbehind nécessite un navigateur moderne. Les regex Python, PCRE et .NET peuvent se comporter différemment.

Cas d'utilisation courants

📝

Validation de formulaires

Testez les motifs d'email, téléphone, date et mot de passe avant de les implémenter dans votre logique de validation frontend ou backend.

📊

Analyse de logs

Extrayez les horodatages, niveaux d'erreur et messages des fichiers de log en utilisant des groupes de capture nommés. Copiez les correspondances en JSON pour un traitement ultérieur.

🔍

Extraction de données

Extrayez des URLs, adresses IP, UUIDs ou couleurs hexadécimales de texte non structuré. Le tableau des correspondances affiche chaque occurrence avec les détails de position.

⚙️

Refactorisation de code

Utilisez l'onglet Remplacer pour tester les motifs de recherche et remplacement avant de les appliquer dans votre IDE. Supporte les références aux groupes de capture comme $1 et $<name>.

📚

Apprendre les Regex

L'onglet Expliquer décompose tout motif en tokens compréhensibles. Combiné avec l'Aide-mémoire et les Exemples, c'est un environnement d'apprentissage complet.

Questions fréquemment posées

Qu'est-ce qu'une expression régulière ?
Une expression régulière (regex) est un motif qui décrit un ensemble de chaînes. Elle est utilisée pour rechercher, faire correspondre et manipuler du texte. Par exemple, \d+ correspond à un ou plusieurs chiffres.
Cet outil utilise-t-il les regex JavaScript ?
Oui. Cet outil utilise le moteur RegExp intégré de JavaScript. Certaines syntaxes peuvent différer de PCRE (PHP), Python re, .NET ou Java regex. L'étiquette du moteur est toujours affichée.
Pourquoi ma regex fonctionne ici mais pas en Python ?
Les moteurs regex de JavaScript et Python diffèrent dans certains domaines. Par exemple, le lookbehind en JS doit être de longueur fixe dans certains navigateurs, le comportement de \b avec Unicode est différent et les quantificateurs possessifs ne sont pas disponibles en JS.
Que fait le drapeau global (g) ?
Sans le drapeau global, seule la première correspondance est retournée. Avec g activé, toutes les correspondances non chevauchantes dans l'ensemble du texte sont trouvées et listées.
Pourquoi une seule correspondance est affichée ?
Le drapeau global (g) n'est probablement pas activé. Cliquez sur le bouton g dans la ligne des drapeaux pour l'activer et trouver toutes les correspondances.
Que sont les groupes de capture ?
Les parenthèses () dans une regex créent des groupes de capture qui mémorisent le texte correspondant. Le Groupe 1 est le premier ensemble de parenthèses, le Groupe 2 le deuxième, etc. Les groupes nommés utilisent la syntaxe (?<name>...).
Comment fonctionnent les remplacements comme $1 ?
Dans la chaîne de remplacement, $1 fait référence au texte correspondant au premier groupe de capture, $2 au deuxième, et ainsi de suite. $& est la correspondance complète. $<name> fait référence à un groupe nommé.
Cet outil télécharge-t-il mes données ?
Non. Tous les tests, correspondances et remplacements regex se font entièrement dans votre navigateur avec JavaScript. Vos textes et motifs ne quittent jamais votre appareil.
Pourquoi mon motif est-il lent ?
Certains motifs causent un backtracking catastrophique — temps d'exécution exponentiel sur certaines entrées. Évitez les quantificateurs imbriqués comme (a+)+, utilisez des classes de caractères spécifiques au lieu de .*, et testez avec de grandes entrées prudemment.
Qu'est-ce que le backtracking catastrophique ?
Quand un moteur regex essaie de nombreuses permutations pour trouver une correspondance et échoue, le temps d'exécution peut croître exponentiellement. Cela se produit typiquement avec des motifs ambigus comme (a+)+b sur l'entrée "aaaaaaaac".
Puis-je tester les groupes nommés ?
Oui. Utilisez la syntaxe (?<name>...) dans votre motif. Les groupes nommés apparaissent dans le panneau des Groupes de capture et peuvent être référencés dans les remplacements avec $<name>.
Cet outil supporte-t-il le lookbehind ?
Oui, dans les navigateurs modernes. Le lookbehind (?<=...) et (?<!...) sont supportés dans Chrome 62+, Firefox 78+ et Safari 16.4+. Les navigateurs anciens peuvent générer une erreur.