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.

Source : ECMA-262 § 22.2, ECMA-262 – ECMAScript Language Specification, RegExp (Regular Expression) Objects. Mise à jour : .

Saisissez-la sans les barres obliques, par ex. \d+ et non /\d+/. Le motif fait partie du lien et peut être partagé – le texte à tester, non.
Ma boîte à outilsVos saisies sont enregistrées uniquement dans ce navigateur.

Le texte à analyser. Il reste dans votre navigateur et n’est pas inclus dans le lien.

Votre texte reste dans votre navigateur : il n’est ni envoyé, ni enregistré, ni ajouté à l’adresse de la page.

Résultat

Résultat
2 correspondances
Correspondances
N°IndexLongueurCorrespondance
127102026-09-27
256102026-10-15
Groupes par correspondance
N°GroupeNomValeur
11year2026
12month09
13day27
21year2026
22month10
23day15
Motif expliqué
ÉlémentSignification
(?<year>début du groupe 1, nommé « year »
› \dun chiffre de 0 à 9
› {4}l’élément précédent exactement 4 fois
)fin du groupe
-le texte littéral « - »
(?<month>début du groupe 2, nommé « month »
› \dun chiffre de 0 à 9
› {2}l’élément précédent exactement 2 fois
)fin du groupe
-le texte littéral « - »
(?<day>début du groupe 3, nommé « day »
› \dun chiffre de 0 à 9
› {2}l’élément précédent exactement 2 fois
)fin du groupe
En littéral JavaScript
/(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/g

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.

Tester une regex en 3 étapes

  1. Saisissez le motif sans les barres obliques, par ex. \d+.
  2. Cochez les options voulues (g pour toutes les correspondances, i pour ignorer la casse…).
  3. Collez le texte de test et lisez les correspondances, les groupes et l’explication du motif.

Exemple : le motif \d{4} avec l’option g trouve 2 correspondances dans « Né en 1990, installé en 2015 » : 1990 à la position 6 et 2015 à la position 24 (positions comptées à partir de 0).

Lire le résultat

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.

Autres outils pour développeurs : le validateur JSON, le validateur XML et CSV et l’encodeur Base64.

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

Dernière mise à jour : · Principes éditoriaux

Outils similaires