TanodTools
FR

Testeur de regex

Essayez une expression régulière sur un texte d'exemple et voyez chaque correspondance, ses groupes de capture et le résultat d'un remplacement.

Fonctionne entièrement dans votre navigateur

Drapeaux

Correspondances dans le texte

  
#PositionCorrespondanceGroupes

Syntaxe regex JavaScript (ECMAScript) telle que votre navigateur la prend en charge. Texte jusqu'à 5 Mo ; les 1 000 premières correspondances sont listées et surlignées. Un motif qui s'exécute plus de 2 secondes est arrêté.

Comment tester une expression régulière

  1. Tapez le motif entre les barres obliques et cochez les drapeaux nécessaires, comme g pour toutes les correspondances ou i pour ignorer la casse.
  2. Collez votre texte de test. Les correspondances sont surlignées pendant la saisie, et le tableau liste chaque correspondance avec sa position et ses groupes de capture.
  3. Pour vérifier une substitution, tapez un remplacement comme $2-$1 ou $<year> et lisez le résultat en dessous.

Tester des motifs en toute sécurité

Ce testeur de regex construit un RegExp JavaScript à partir de votre motif et de vos drapeaux, et l'exécute dans un worker en arrière-plan, avec le même moteur que celui qu'utilisera votre code dans ce navigateur. Les correspondances reviennent avec leur position de début et chaque groupe de capture, et la page les dessine sur votre texte avec un surlignage alterné pour que les correspondances voisines restent distinctes. Une correspondance vide, comme celle que peuvent produire \b ou a*, apparaît sous forme de fine barre.

Exécuter le motif dans un worker est important, car une expression régulière peut prendre un temps exponentiel. Si un motif tourne encore au bout de 2 secondes, le worker est arrêté et vous recevez un message au lieu d'un onglet figé. La même protection s'applique à Rechercher et remplacer.

Les positions sont comptées en unités de code UTF-16, comme le font les chaînes JavaScript : un emoji ou un autre caractère hors du plan de base en occupe deux. La liste affiche les 1 000 premières correspondances ; le total indiqué au-dessus les inclut toutes.

Astuces

Questions fréquentes

Quelle variante de regex est utilisée ?

Celle de JavaScript, exécutée par le moteur de votre propre navigateur : les résultats sont exactement ceux que donne RegExp dans votre navigateur ou dans Node.js. La syntaxe courante est en grande partie commune avec PCRE, Python et Java, mais certaines fonctions diffèrent : les quantificateurs possessifs et les groupes atomiques ne sont pas pris en charge, et le lookbehind, les groupes nommés et le drapeau v nécessitent un navigateur récent.

Pourquoi une seule correspondance s'affiche-t-elle ?

Sans le drapeau g (global), une regex JavaScript ne trouve que la première correspondance, et le remplacement ne modifie que la première occurrence. Cochez g pour toutes les trouver. Le testeur suit exactement le langage : ce que vous voyez est ce que fera votre code.

À quoi servent les drapeaux ?

g trouve toutes les correspondances, i ignore la casse, m fait correspondre ^ et $ aux sauts de ligne, s permet à . de correspondre aux sauts de ligne, u active la gestion complète d'Unicode, v est le mode Unicode plus récent avec opérations sur les ensembles, y (sticky) ne trouve une correspondance qu'à la position courante, et d enregistre le début de chaque groupe, ce que le testeur utilise de toute façon pour les positions des groupes.

Comment utiliser les groupes dans le remplacement ?

$1, $2, etc. insèrent les groupes numérotés, $<name> insère un groupe nommé, $& insère la correspondance entière, $` et $' insèrent le texte avant et après celle-ci, et $$ écrit un signe dollar littéral.

Pourquoi mon motif s'est-il arrêté avec « trop de temps » ?

Certains motifs, comme ^(a+)+$ appliqué à une longue suite de a qui ne se termine pas comme prévu, obligent le moteur à essayer un nombre énorme de façons de correspondre. C'est ce qu'on appelle le backtracking catastrophique. Le testeur exécute chaque motif dans un worker en arrière-plan et l'arrête au bout de 2 secondes pour que la page reste utilisable. Réécrivez les répétitions imbriquées comme (a+)+ en a+.

Mon texte est-il envoyé quelque part ?

Non. Le motif et le texte restent dans votre navigateur ; la recherche des correspondances se fait sur votre appareil et rien n'est envoyé ni conservé.