tigtools

Testeur de regex

Saisissez un motif et du texte pour afficher toutes les correspondances surlignées, avec leur position et leurs groupes de capture. Utilise le moteur d’expressions régulières JavaScript de votre navigateur.

Fonctionne dans votre navigateur Sans inscription

Drapeaux

Utilisez $1, $2… pour les groupes numérotés, $<name> pour les groupes nommés, $& pour la correspondance entière et $$ pour un signe dollar.

Mode d’emploi

  1. Saisissez une expression régulière dans le champ Motif, sans les barres obliques qui l’entourent.
  2. Cochez les drapeaux dont vous avez besoin. g (global) trouve toutes les correspondances au lieu de la première seulement.
  3. Collez le texte à rechercher. Les correspondances sont surlignées et répertoriées avec leur position et leurs groupes de capture.
  4. Vous pouvez saisir un remplacement, par exemple $2-$1, pour prévisualiser le résultat de String.replace.

Fonctionnement

Le testeur exécute votre motif avec l’objet RegExp intégré au navigateur. Les résultats sont donc exactement ceux que produirait du code JavaScript (ECMAScript) dans ce navigateur. Les autres langages utilisent des variantes différentes des regex : PCRE (PHP), le module re de Python, Java et .NET prennent en charge des fonctionnalités absentes de JavaScript, comme les quantificateurs possessifs (a++), les groupes atomiques ((?>…)), les modificateurs intégrés tels que (?i) et la récursivité. Ils diffèrent aussi sur certains détails, comme les ancres \A et \Z. Testez un motif dans le langage concerné avant de vous y fier. Les assertions de recherche arrière ((?<=…)), les groupes nommés ((?<name>…)) et les échappements de propriétés Unicode (\p{L} avec le drapeau u) fonctionnent dans tous les navigateurs actuels.

Sans le drapeau g ou y, seule la première correspondance est trouvée, comme avec RegExp.exec. Les correspondances de longueur nulle, par exemple celles de ^ ou \b, sont répertoriées mais pas surlignées. Après une telle correspondance, la recherche avance d’un caractère (d’un point de code avec le drapeau u), comme le fait String.matchAll. Les groupes de capture sont affichés par numéro et, le cas échéant, par nom. Un groupe qui n’a pas participé à la correspondance est indiqué comme n’ayant aucune valeur, ce qui diffère d’une correspondance vide.

Certains motifs, comme (a+)+$ sur une longue ligne sans correspondance, peuvent prendre un temps exponentiel avant d’échouer (retour arrière catastrophique). Pour limiter ce risque, la recherche démarre un court instant après la fin de la saisie, porte uniquement sur les 100 000 premiers caractères du texte et recueille au maximum 1 000 correspondances. Un motif pathologique peut tout de même bloquer l’onglet pendant un moment. Si cela se produit, simplifiez le motif ou raccourcissez le texte.

Exemples

Extraire des dates

Le motif (\d{4})-(\d{2})-(\d{2}) avec le drapeau g activé trouve deux correspondances dans « Due 2026-03-15, paid 2026-04-02 ». Le groupe 1 correspond à l’année ; le remplacement $3.$2.$1 transforme le texte en « Due 15.03.2026, paid 02.04.2026 ».

Des groupes nommés pour un code plus lisible

Le motif (?<key>\w+)=(?<value>[^&]*) appliqué à la chaîne de requête a=1&b=two affiche la clé et la valeur de chaque paire, comme le renvoient match.groups.key et match.groups.value en JavaScript.

Recherche insensible à la casse sur plusieurs lignes

Le motif ^error:.* avec les drapeaux g, i et m trouve chaque ligne d’un journal qui commence par Error:, ERROR: ou error:, car m fait correspondre ^ au début de chaque ligne.

Foire aux questions

Mon regex fonctionnera-t-elle de la même façon en Python, PHP ou Java ?

Pas nécessairement. Cet outil utilise le moteur JavaScript. La syntaxe de base est commune, mais certaines fonctionnalités, comme les quantificateurs possessifs, les groupes atomiques, les drapeaux intégrés tels que (?i) et certaines séquences d’échappement, ne sont disponibles que dans d’autres variantes. Certaines fonctionnalités se comportent aussi différemment. Testez toujours votre motif dans le langage cible.

Pourquoi une seule correspondance est-elle trouvée ?

Le drapeau g (global) est désactivé. Sans lui, JavaScript ne renvoie que la première correspondance. Cochez g pour toutes les trouver.

Dois-je saisir les barres obliques autour du motif ?

Non. Saisissez uniquement le motif, par exemple \d+ plutôt que /\d+/g, puis choisissez les drapeaux à l’aide des cases à cocher. La syntaxe littérale JavaScript s’affiche sous les résultats pour que vous puissiez la copier dans votre code.

Pourquoi la page a-t-elle ralenti avec mon motif ?

Les quantificateurs imbriqués, comme (a+)+ ou (.*)*, peuvent obliger le moteur à essayer un nombre exponentiel de possibilités en l’absence de correspondance. Rendez le motif plus précis, par exemple en remplaçant .* par [^,]*, ou utilisez des ancres. Pour limiter les effets, le testeur restreint le texte à 100 000 caractères.

Confidentialité

Votre motif et votre texte sont traités uniquement dans votre navigateur par son moteur JavaScript. Rien n’est envoyé, enregistré ni inclus dans les données d’analyse.