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
- Comparador — compara antes/depois ao refatorar padrões
- Formatador JSON — para testar padrões contra payloads de API