Testeur regex
Saisissez un motif, choisissez les drapeaux, collez votre texte : le testeur regex affiche chaque correspondance avec son index, le contenu des groupes de capture numérotés et nommés et explique chaque élément du motif en français. La recherche utilise le moteur JavaScript (ECMAScript) de votre navigateur.
Comment le calcul est fait
Ce testeur regex utilise la variante JavaScript des expressions régulières, telle que définie par la norme ECMA-262 et implémentée par votre navigateur. Un motif qui fonctionne ici fonctionne exactement de la même façon avec String.prototype.match, matchAll, replace et RegExp.prototype.test – dans Chrome, Firefox, Safari et Node.js.
Lire le résultat
- Correspondances : chaque correspondance avec son index (position du caractère à partir de zéro, comptée en unités de code UTF-16 comme en JavaScript – un emoji compte pour 2) et sa longueur. Les sauts de ligne sont affichés en ↵, les tabulations en ⇥.
- Groupes par correspondance : ce que chaque paire de parenthèses a capturé – groupes numérotés
( )et groupes nommés(?<nom> ). « Non utilisé » signifie que le groupe se trouve dans une alternative qui n’a pas été empruntée. Avec le drapeaud, vous obtenez aussi la position de chaque groupe. - Motif expliqué : chaque élément en clair ; les lignes en retrait (›) se trouvent à l’intérieur d’un groupe.
Les drapeaux
g trouve toutes les correspondances au lieu de la première seulement, i ignore la casse, m fait agir ^ et $ ligne par ligne, s permet au point de reconnaître les sauts de ligne. u traite les emoji et autres caractères hors du plan multilingue de base comme un seul caractère et active les propriétés Unicode comme \p{L} (n’importe quelle lettre, é ou ç compris). v est la version récente de u, avec des opérations d’ensembles comme [\p{L}--[a-z]] ; u et v ne peuvent pas être combinés. y (« sticky ») ne trouve que des correspondances qui se suivent sans interruption.
Protection contre les boucles infinies et les blocages
Des motifs comme a* ou \b peuvent produire des correspondances vides. Comme JavaScript lui-même, le testeur avance alors d’un caractère (d’un point de code entier avec u/v) : il n’y a donc pas de boucle infinie. Au maximum 1 000 correspondances sont recherchées.
Le vrai danger est le retour arrière catastrophique (ReDoS) : des quantificateurs imbriqués comme (a+)+$ essaient un nombre exponentiel de combinaisons sur un texte qui ne correspond pas – 30 caractères peuvent occuper le moteur pendant des minutes. C’est pourquoi la recherche s’exécute dans un thread d’arrière-plan distinct et s’arrête au bout de 2 secondes ; la page reste réactive. Évitez aussi ce genre de motifs dans votre propre code, surtout sur des saisies d’utilisateurs.
Différences avec les autres variantes de regex
PCRE (PHP), Python, Java et .NET diffèrent sur des détails : JavaScript ne connaît ni quantificateurs possessifs (a++), ni groupes atomiques, ni ancres \A ou \Z ; \w ne couvre que A–Z, a–z, 0–9 et le tiret bas – pour les lettres accentuées, utilisez \p{L} avec le drapeau u.
Votre texte de test n’est ni envoyé, ni enregistré, ni écrit dans le lien – seuls le motif et les drapeaux le sont.
Questions fréquentes
Comment tester une expression régulière ?
Saisissez le motif sans barres obliques dans le champ du haut, cochez les drapeaux nécessaires et collez votre texte. Toutes les correspondances sont aussitôt surlignées dans le texte et listées avec leur index ; en dessous, vous voyez ce que chaque groupe a capturé.
Pourquoi \w ne reconnaît-il pas les lettres accentuées ?
En JavaScript, \w ne désigne que A–Z, a–z, 0–9 et _. Pour les lettres de toutes les langues, utilisez \p{L} avec le drapeau u, par ex. [\p{L}\d_]+ pour un mot comme « café ».
Quelle différence entre quantificateur gourmand et paresseux ?
Les quantificateurs gourmands (*, +, {2,}) prennent le plus de texte possible, les paresseux (non gourmands), suivis d’un point d’interrogation (*?, +?), le moins possible. Sur « <b>x</b> », <.+> reconnaît toute la chaîne, <.+?> seulement « <b> ».
Comment nommer un groupe de capture ?
Avec (?<nom>…). Dans le code, vous le lisez via match.groups.nom, dans une chaîne de remplacement avec $<nom> et dans le motif lui-même avec la référence arrière \k<nom>.
Pourquoi ma recherche a-t-elle été interrompue ?
Elle a duré plus de 2 secondes – en général à cause d’un retour arrière catastrophique dû à des quantificateurs imbriqués comme (\w+)*. Simplifiez le motif : n’imbriquez pas les quantificateurs, rendez les alternatives non ambiguës et ancrez-le avec ^ et $.
Le résultat vaut-il aussi pour PHP ou Python ?
Pour des motifs simples, le plus souvent oui, mais il n’est garanti que pour JavaScript. PHP (PCRE) et Python acceptent une syntaxe supplémentaire comme les quantificateurs possessifs ou \A, et Python écrit traditionnellement les groupes nommés (?P<nom>…).
Sources et références juridiques
- ECMA-262 § 22.2: ECMA-262 – ECMAScript Language Specification, RegExp (Regular Expression) Objects
- MDN Web Docs – Regular expressions (Guide)
- MDN Web Docs – RegExp.prototype.flags
- MDN Web Docs – String.prototype.matchAll() (empty matches, lastIndex)
- OWASP – Regular expression Denial of Service (ReDoS)
Dernière mise à jour :
Outils similaires
- Formater, valider et minifier du JSONValidez votre JSON selon la RFC 8259 : erreur avec ligne, colonne et explication claire. Indentez ou minifiez, triez les clés. En local dans le navigateur.
- Validateur XML et CSV en ligneVérifiez qu’un XML est bien formé et qu’un CSV respecte la RFC 4180 : erreurs avec ligne et colonne, séparateur détecté, aperçu du tableau. En local.
- Encoder et décoder en Base64Encodez et décodez Base64 et Base64url en UTF-8 correct, ainsi que l’encodage URL (pourcent-encodage). Erreurs expliquées, tout en local.
- Générateur de hash : SHA-256, SHA-512, SHA-1, MD5Calculez les hash SHA-256, SHA-384, SHA-512, SHA-1 et MD5 d’un texte ou d’un fichier et vérifiez une somme de contrôle – en local, sans envoi.
- Vérifier la syntaxe d’adresses e-mailVérifiez une ou plusieurs adresses e-mail selon les RFC 5321/5322 : longueurs, domaine, domaines accentués (Punycode). En local, sans envoi.
- Vérifier et calculer une clé de LuhnVérifiez un numéro avec l’algorithme de Luhn (modulo 10, ISO/IEC 7812-1) ou calculez sa clé – simple contrôle de format, en local dans le navigateur.