Testeur Regex : Test de Motifs avec Correspondances
Testeur regex : déboguez les expressions régulières avec surlignage en direct, groupes de capture et support complet des flags regex.
Qu'est-ce que le Testeur Regex ?
Le Testeur Regex est un outil gratuit dans le navigateur pour écrire, tester et déboguer des expressions régulières avec un retour en temps réel. Il résout le problème central du développement regex : on ne peut pas savoir si un motif est correct sans le tester contre du texte réel, et le cycle éditer-exécuter-vérifier est lent et fragmenté dans la plupart des environnements.
Tapez un motif et il est évalué instantanément. Les correspondances sont surlignées directement dans votre chaîne de test, les groupes de capture sont extraits et étiquetés, les positions de caractères sont rapportées pour chaque correspondance, et un mode de remplacement permet de prévisualiser les substitutions avant de les intégrer dans le code de production. Les six flags JavaScript sont supportés. Une bibliothèque de 49 motifs préconstruits organisés par catégorie est disponible pour les besoins de validation courants. Tout fonctionne dans le navigateur — vos motifs et données de test ne sont jamais envoyés nulle part.
Fonctionnalités principales
- Correspondance en direct à la frappe : Les correspondances sont recalculées à chaque frappe avec le moteur
RegExpnatif de JavaScript. Le panneau de résultats se met à jour sans aucun clic. - Tous les flags regex JavaScript (g, i, m, s, u, y) : Chaque flag est une case à cocher étiquetée : global, insensible à la casse, multilignes, dotAll, unicode et sticky. Les flags actifs sont affichés en direct à côté du champ de saisie du motif, reflétant la notation
/motif/flagsutilisée dans le code source JavaScript. - Surlignage des correspondances dans la chaîne de test : Le panneau Correspondances Surlignées affiche votre chaîne de test avec chaque correspondance entourée d'un élément
<mark>stylisé avec un fond de couleur primaire. Le texte sans correspondance apparaît sans style. Le panneau affiche le nombre de correspondances en direct. - Extraction des groupes de capture : Le panneau Détails des Correspondances apparaît dès qu'il y a des correspondances. Chaque entrée affiche le texte complet de la correspondance, ses positions de début et de fin, et une liste étiquetée des groupes de capture (
$1,$2, etc.). Les groupes sans contenu sont étiquetés "vide". - Nombre et positions des correspondances : Chaque entrée dans le panneau de détails affiche l'
indexexact etindex + match.length, qui correspondent directement à la propriétéindexdeRegExpExecArrayde JavaScript. - Mode de remplacement avec substitution : Une section de remplacement activable prend une chaîne de remplacement et affiche le résultat complet de la substitution. Prend en charge les rétro-références (
$1,$2). Le résultat peut être copié dans le presse-papiers. - Bibliothèque de motifs regex courants : Une bibliothèque de motifs consultable avec 49 motifs répartis en 8 catégories : Validation, Dates et Heures, Nombres, Web et Réseau, Fichiers et Chemins, Code, Texte et Identifiants. Un clic sur "Use Pattern" le charge dans le champ de saisie du motif.
Comment utiliser le Testeur Regex
Étape 1 : Entrer le motif
Tapez votre expression régulière dans le champ de saisie du motif. Le champ est affiché avec des délimiteurs / de chaque côté pour indiquer visuellement le format regex. Vous n'incluez pas les barres obliques dans ce que vous tapez — seulement le corps du motif.
Si votre motif a une erreur de syntaxe (comme un groupe non fermé ou une séquence d'échappement invalide), un message d'erreur apparaît immédiatement en rouge sous le champ de saisie, avec le texte exact de l'erreur du constructeur RegExp de JavaScript. Vous ne pouvez pas exécuter un motif erroné, mais le message d'erreur identifie précisément le problème.
Étape 2 : Configurer les flags
Sous le champ de saisie du motif se trouvent six cases à cocher de flags. Par défaut, le flag g (global) est activé. Activez ou désactivez les flags en cliquant sur leurs cases :
g(global) : trouver toutes les correspondances, pas seulement la premièrei(insensible à la casse) : traiter les majuscules et minuscules comme équivalentesm(multilignes) : faire correspondre^et$au début et à la fin de chaque ligne, pas seulement de la chaîne entières(dotAll) : faire correspondre.aux caractères de nouvelle ligne ainsi qu'à tous les autresu(unicode) : activer le support Unicode complet ; requis pour les motifs qui utilisent les échappements de propriété Unicode\p{}y(sticky) : correspondre uniquement à la position actuelle dans la chaîne (lastIndex), sans chercher en avant
La chaîne de flags actifs est affichée en direct à côté du champ du motif, donc gi apparaîtrait si global et insensible à la casse sont cochés.
Étape 3 : Entrer la chaîne de test
Collez ou tapez le texte contre lequel vous voulez faire correspondre dans le panneau Chaîne de Test. Le nombre de caractères de la chaîne de test est affiché dans l'en-tête du panneau. La zone de texte accepte les entrées multilignes et se redimensionne verticalement.
Étape 4 : Lire les résultats des correspondances
Le panneau Correspondances Surlignées à droite se met à jour instantanément. Chaque portion de la chaîne de test qui correspond à votre motif est surlignée. L'en-tête du panneau affiche le nombre total de correspondances.
Sous les deux panneaux principaux, une section Détails des Correspondances apparaît en listant chaque correspondance individuellement :
- Numéro de correspondance (indexé à partir de 1)
- Le texte correspondant, affiché dans un bloc de code surligné
- Positions de caractères : index de début et index de fin
- Groupes de capture, étiquetés
$1,$2, etc.
Étape 5 : Utiliser le mode de remplacement (optionnel)
Cliquez sur le bouton "Show Replace" pour ouvrir la section de remplacement. Entrez une chaîne de remplacement dans le champ Replace With. Les rétro-références fonctionnent : $1 insère le contenu du premier groupe de capture, $2 le second, et ainsi de suite. Le panneau Résultat se met à jour immédiatement en affichant le résultat complet de la substitution. Cliquez sur l'icône de copie pour copier le résultat.
Étape 6 : Utiliser la bibliothèque de motifs (optionnel)
Cliquez sur le bouton "Pattern Library" pour ouvrir le panneau de motifs consultable. Tapez dans le champ de recherche pour filtrer par nom, description ou catégorie. Cliquez sur "Use Pattern" à côté d'une entrée pour la charger directement dans le champ du motif. La bibliothèque se ferme automatiquement après la sélection.
Exemples pratiques
Exemple 1 : Valider des adresses email
Motif : ^[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}$
Flags : g
Chaîne de test :
user@example.com
invalid-email
another@test.co.uk
@missing-local.com
Résultat : Deux correspondances — user@example.com et another@test.co.uk sont surlignées. Les deux autres lignes ne produisent aucune correspondance.
Exemple 2 : Extraire des groupes de capture de lignes de journal
Motif : (\d{4}-\d{2}-\d{2}) (\w+): (.+)
Flags : gm
Chaîne de test :
2026-02-28 ERROR: Connection timeout after 30s
2026-02-27 INFO: Server started on port 3000
Détails de la Correspondance 1 :
- Correspondance complète :
2026-02-28 ERROR: Connection timeout after 30s $1:2026-02-28$2:ERROR$3:Connection timeout after 30s
Exemple 3 : Remplacement avec rétro-références de groupes de capture
Motif : (\w+)\s(\w+) Remplacer par : $2, $1 Chaîne de test : John Smith Résultat : Smith, John
Cela démontre le mode de remplacement en utilisant $1 et $2 pour inverser l'ordre de deux groupes de mots capturés.
Conseils et bonnes pratiques
Activez le flag global pour des tests exhaustifs. Avec g désactivé, la correspondance s'arrête après le premier résultat. En développement, vous voudrez généralement g activé pour voir toutes les correspondances potentielles dans votre chaîne de test et vérifier qu'il n'y a pas de correspondances supplémentaires inattendues.
Utilisez le flag m (multilignes) lorsque votre motif utilise ^ ou $. Sans m, ^ correspond uniquement au tout début de la chaîne d'entrée entière et $ uniquement à la toute fin. Avec m, ils correspondent au début et à la fin de chaque ligne, ce qui est presque toujours ce que vous voulez lors du traitement d'une entrée multiligne.
La protection contre les correspondances de longueur zéro est intégrée. Lorsque le flag global est actif, la boucle de correspondance vérifie les correspondances de longueur zéro et incrémente lastIndex pour éviter une boucle infinie. Cela signifie que des motifs comme a* ou \b ne bloqueront pas le navigateur.
Copiez le motif en notation /motif/flags. Le bouton Copy Pattern écrit le motif complet dans le presse-papiers en notation JavaScript, y compris les barres obliques et les flags actifs — par exemple /\d{4}-\d{2}-\d{2}/gm. Vous pouvez le coller directement dans le code source JavaScript.
Enregistrez les motifs dans les Snippets. Le bouton Save to Snippets (visible à côté de Copy Pattern) enregistre votre motif actuel — au format /motif/flags — dans la bibliothèque de Snippets disponible via les fonctionnalités supporter de Glyph Widgets. C'est plus durable que de se fier uniquement à l'historique de session.
Problèmes courants et dépannage
Le motif affiche un message d'erreur en rouge. Le texte de l'erreur provient directement du constructeur RegExp de JavaScript et décrit ce qui s'est passé. Les erreurs courantes incluent Invalid regular expression: missing ) (groupe de capture non fermé) et Invalid escape (une barre oblique inverse suivie d'un caractère qui n'est pas une séquence d'échappement valide sans le flag u). Lisez le message d'erreur littéralement — il spécifie le problème.
Les correspondances attendues ne sont pas surlignées. Vérifiez si vous avez besoin du flag i pour une correspondance insensible à la casse, ou du flag m si votre motif utilise ^ ou $ sur une entrée multiligne. Vérifiez également que le motif n'est pas trop ancré — ^\d+$ correspond uniquement à une ligne contenant uniquement des chiffres, pas des chiffres incorporés dans un autre texte.
Les groupes de capture affichent "vide". Un groupe de capture est "vide" lorsque le groupe participe à la correspondance mais que le sous-motif a correspondu à zéro caractère, ou lorsqu'un groupe optionnel ((...)?) n'a pas participé. C'est distinct d'un groupe qui n'était pas du tout dans le motif.
Le remplacement n'utilise pas les rétro-références. Les rétro-références dans la chaîne de remplacement utilisent la syntaxe $1, $2, $n. Utiliser \1 ou %1 ne fonctionnera pas — ce ne sont pas valides dans String.prototype.replace de JavaScript. Les groupes nommés utilisent la syntaxe $<nom>.
Le motif se charge depuis la bibliothèque mais ne correspond pas. Certains motifs de la bibliothèque incluent des ancres (^ et $) et sont conçus pour la validation de chaînes entières, pas pour la correspondance de sous-chaînes dans une chaîne de test plus grande. Si vous recherchez le motif dans un paragraphe, supprimez les ancres ou ajoutez g sans m pour voir si le motif de base correspond.
Confidentialité et sécurité
Toute l'évaluation des expressions régulières dans le Testeur Regex s'exécute dans votre navigateur en utilisant le moteur RegExp natif de JavaScript. Aucun motif, aucune chaîne de test et aucun résultat de correspondance ne sont transmis à un serveur quelconque. La fonctionnalité d'URL partageable encode votre motif et votre chaîne de test dans l'URL elle-même (côté client uniquement), de sorte que le partage d'un lien n'implique pas d'aller-retour vers le serveur. L'outil fonctionne hors ligne après le chargement initial de la page.
Questions fréquemment posées
Le Testeur Regex est-il gratuit ? Oui, entièrement gratuit sans compte, sans inscription et sans limites d'utilisation.
Mes données sont-elles en sécurité ? Vos motifs et chaînes de test ne quittent jamais votre navigateur. Toute la correspondance s'exécute localement en utilisant le RegExp intégré de JavaScript. L'outil n'a aucun composant côté serveur impliqué dans le processus de correspondance.
Puis-je l'utiliser hors ligne ? Oui. Une fois la page chargée, l'outil entier fonctionne sans connexion internet. La bibliothèque de motifs, le moteur de correspondance et le mode de remplacement fonctionnent tous localement.
Quel dialecte regex utilise-t-il ? L'outil utilise le moteur RegExp natif de JavaScript, qui implémente la spécification des expressions régulières ECMAScript. Cela prend en charge la plupart de la syntaxe regex courante, y compris les lookaheads, lookbehinds (en JS moderne), les groupes de capture, les groupes sans capture, les rétro-références et les échappements de propriété Unicode (avec le flag u).
Prend-il en charge les lookaheads et lookbehinds ? Oui. Les lookaheads positifs (?=...), les lookaheads négatifs (?!...), les lookbehinds positifs (?<=...) et les lookbehinds négatifs (?<!...) sont tous pris en charge par le moteur JavaScript utilisé ici, car ils font partie de la spécification ECMAScript 2018 et sont pris en charge par tous les navigateurs modernes.
Puis-je partager mon motif avec quelqu'un ? Oui. L'outil utilise un état partageable qui encode votre motif, votre chaîne de test et vos flags dans l'URL. Copiez l'URL depuis la barre d'adresse de votre navigateur et partagez-la. Lorsque le destinataire ouvre le lien, une notification toast l'informe que l'état a été chargé depuis une URL partagée.
Combien de motifs y a-t-il dans la bibliothèque ? La bibliothèque contient 49 motifs organisés en 8 catégories : Validation (10 motifs dont email, URL, téléphone, UUID, mot de passe), Dates et Heures (5 motifs), Nombres (5 motifs), Web et Réseau (6 motifs), Fichiers et Chemins (5 motifs), Code (6 motifs), Texte (7 motifs) et Identifiants (5 motifs dont carte de crédit, SSN, IBAN, ISBN-13 et IMEI).
Quelle est la différence entre les flags s (dotAll) et m (multilignes) ? Ils affectent des choses différentes. Le flag s fait correspondre . aux sauts de ligne en plus de tous les autres caractères. Sans lui, . ignore les caractères de nouvelle ligne. Le flag m fait correspondre ^ et $ au début et à la fin de chaque ligne plutôt qu'à la chaîne entière. Ils sont indépendants — vous pouvez activer l'un, les deux ou aucun.
Puis-je utiliser des échappements de propriété Unicode comme \p{Letter} ? Oui, mais le flag u doit être activé. Avec u actif, des motifs comme \p{Lu} (lettre majuscule) et \p{Script=Latin} sont pris en charge par les navigateurs modernes. Sans u, la séquence \p est traitée comme un p littéral.
Comment faire correspondre sur plusieurs lignes ? Activez le flag s (dotAll) pour que . corresponde aux sauts de ligne, puis utilisez [\s\S]*? ou simplement .+ avec s actif. Activez également m si vous avez besoin que ^ et $ s'ancrent aux débuts et fins de lignes.
Outils connexes
- JSON Formatter — Formatez du JSON pour l'utiliser comme chaîne de test regex
- Base64 Encoder/Decoder — Encodez/décodez du texte sur lequel vous devez appliquer une regex
- Diff Checker — Comparez le texte original et le texte remplacé côte à côte
Essayez le Testeur Regex maintenant : Testeur Regex