TK TaskKit
Ferramentas para programadores

Testador de regex

Testa expressões regulares de JavaScript com realce de correspondências, grupos de captura e timeout em Web Worker contra retrocesso catastrófico.

Padrão/

Escreve um padrão para veres um desdobramento token a token.

Texto de teste
Resultado
Escreve um padrão e um texto de teste para ver as correspondências.

As entradas ficam neste dispositivo. Cada ferramenta para programadores no TaskKit corre inteiramente no teu navegador. Tokens, payloads e texto colado não são transmitidos para servidores do TaskKit nem para terceiros.

O que esta ferramenta faz

Um testador de expressões regulares JavaScript com realce de correspondências em direto, decomposição de grupos de captura e proteção contra backtracking catastrófico. O campo de flags aceita o conjunto padrão (g i m s u y), e as correspondências são listadas com os seus índices de início e fim e quaisquer grupos nomeados ou numerados.

Quando usar

  • Esboçar um regex contra uma amostra representativa antes de o colares no código.
  • Confirmar o que um regex de outra pessoa realmente corresponde (e o que não corresponde).
  • Apertar um padrão que estava demasiado ganancioso ou demasiado largo em produção.
  • Praticar especificamente o flavor do JavaScript, já que cada linguagem tem semântica subtilmente diferente.

Como funciona

O padrão é compilado com new RegExp(pattern, flags) e depois corrido contra o texto de teste. A correspondência acontece dentro de um Web Worker com timeout de 1 segundo — se o padrão desencadear backtracking catastrófico no input fornecido, o worker é terminado e vês um erro de "regex demorou demasiado" em vez de um separador bloqueado. Esta é uma preocupação real para padrões como (a+)+b contra inputs longos de a.

Notas

Porque é necessário um Web Worker? Os motores de regex dos navegadores não expõem timeout, e um único regex lento pode bloquear a thread principal durante dezenas de segundos. Correr a correspondência dentro de um Worker significa que podemos fazer worker.terminate() e manter o separador responsivo.

Suporta funcionalidades Perl/PCRE? Não — apenas o que o JavaScript suporta. \K, grupos atómicos, quantificadores possessivos e padrões recursivos não fazem parte da gramática regex de JS. Lookbehind e grupos nomeados sim.

O meu regex corresponde nesta ferramenta mas não no meu código. Verifica as flags. A flag u muda como algumas classes de caracteres correspondem a Unicode; a flag g afeta o estado entre chamadas quando reutilizas o objeto regex.

Ferramentas relacionadas