TK TaskKit
Outils dev

Testeur de regex

Teste des expressions régulières JavaScript avec mise en évidence des correspondances, groupes de capture et timeout dans un Web Worker contre le backtracking catastrophique.

Motif/

Tape un motif pour voir un détail token par token.

Texte de test
Résultat
Tape un motif et un texte de test pour voir les correspondances.

Les entrées restent sur cet appareil. Chaque outil dev de TaskKit tourne entièrement dans ton navigateur. Tokens, payloads et texte collé ne sont pas transmis aux serveurs de TaskKit ni à des tiers.

Ce que fait cet outil

Un testeur d'expression régulière JavaScript avec mise en évidence de correspondance en direct, détail des groupes de capture et protection contre le backtracking catastrophique. L'entrée des flags accepte le set standard (g i m s u y), et les correspondances sont listées avec leurs indices de début et de fin et tous les groupes nommés ou numérotés.

Quand l'utiliser

  • Brouillonner une regex contre un échantillon représentatif avant de la coller dans le code.
  • Confirmer ce qu'une regex de quelqu'un d'autre matche vraiment (et ce qu'elle ne matche pas).
  • Resserrer un motif qui était trop greedy ou trop laxiste en production.
  • Pratiquer le flavor JavaScript spécifiquement, puisque chaque langage a une sémantique subtilement différente.

Comment ça marche

Le motif est compilé avec new RegExp(pattern, flags) et lancé contre le texte de test. Le matching se fait dans un Web Worker avec un timeout d'1 seconde — si le motif déclenche du backtracking catastrophique sur l'entrée fournie, le worker est terminé et tu vois une erreur « regex took too long » au lieu d'un onglet figé. C'est un vrai souci pour des motifs comme (a+)+b contre de longues entrées de a.

Notes

Pourquoi un Web Worker est-il nécessaire ? Les moteurs regex des navigateurs n'exposent pas de timeout, et une seule regex lente peut figer la thread principale pendant des dizaines de secondes. Faire tourner le matching dans un Worker veut dire qu'on peut worker.terminate() et rester réactif.

Est-ce que ça supporte les fonctionnalités Perl/PCRE ? Non — seulement ce que JavaScript supporte. \K, les groupes atomiques, les quantificateurs possessifs et les motifs récursifs ne font pas partie de la grammaire regex JS. Le lookbehind et les groupes nommés oui.

Ma regex matche dans cet outil mais pas dans mon code. Vérifie les flags. Le flag u change la manière dont certaines classes de caractères matchent l'Unicode ; le flag g affecte l'état entre appels quand tu réutilises l'objet regex.

Outils liés

  • Comparateur — compare avant/après quand tu refactores des motifs
  • Formateur JSON — pour tester des motifs contre des payloads d'API