TK
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/
  • \bWord boundary — matches between a word character and a non-word character.
  • Quantifier +Match the previous token one or more times (greedy).
    • Character classMatches a single character that is one of: `\w.%+-`.
  • Literal "@"Matches the character `@` literally.
  • Quantifier +Match the previous token one or more times (greedy).
    • Character classMatches a single character that is one of: `\w.-`.
  • Escaped "."Matches the character `.` literally (escaping its special meaning).
  • Quantifier {2,}Match the previous token a number of times specified by `{2,}`.
    • Character classMatches a single character that is one of: `A-Za-z`.
  • \bWord boundary — matches between a word character and a non-word character.
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