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.

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.
Vos 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
11jahr2026
12monat09
13tag27
21jahr2026
22monat10
23tag15
Motif expliqué
ÉlémentSignification
(?<jahr>début du groupe 1, nommé « jahr »
› \dun chiffre de 0 à 9
› {4}l’élément précédent exactement 4 fois
)fin du groupe
-le texte littéral « - »
(?<monat>début du groupe 2, nommé « monat »
› \dun chiffre de 0 à 9
› {2}l’élément précédent exactement 2 fois
)fin du groupe
-le texte littéral « - »
(?<tag>début du groupe 3, nommé « tag »
› \dun chiffre de 0 à 9
› {2}l’élément précédent exactement 2 fois
)fin du groupe
En littéral JavaScript
/(?<jahr>\d{4})-(?<monat>\d{2})-(?<tag>\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.

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.

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 :

Outils similaires