UltraConvert
Ferramentas de Texto

Testador de Expressões Regulares

Desenvolva e depure expressões regulares com testes ao vivo contra seu texto de amostra. A visualização de destaques de correspondência mostra exatamente o que corresponde. Inspeione grupos de captura, teste cadeias de substituição e alterne todas as flags de expressões regulares do JavaScript. Um tempo limite de execução de 200ms impede que padrões maliciosos congelem seu navegador.

O que esta ferramenta faz?

O Testador de Expressões Regulares oferece um ambiente interativo para desenvolver expressões regulares do JavaScript. Ele fornece destaques de correspondência ao vivo no texto de teste, inspeção detalhada de grupos de captura (tanto numerados $1, $2 quanto nomeados), todas as flags de expressões regulares do JavaScript (g global, i sem distinção de maiúsculas/minúsculas, m multilinha, s dotAll, u unicode, y sticky) e um modo de substituição para testar substituições de regex com referências $1, $2. A interface captura erros comuns de regex e previne o backtracking catastrófico com um tempo limite de 200ms por execução.

Como funciona

A ferramenta constrói um objeto RegExp do JavaScript a partir da cadeia de padrão selecionada e das flags. Para correspondências, usa RegExp.prototype.exec() em um loop para correspondências globais ou execução única para não globais. Correspondências são destacadas calculando posições de caracteres no texto. Grupos de captura são extraídos do array de correspondência (índice 0 é a correspondência total, 1+ são grupos). Para substituição, é usado String.prototype.replace() com sua cadeia de substituição que pode fazer referência a $& (correspondência total), $1-$99 (grupos de captura), $` (antes da correspondência), $' (depois da correspondência). Um watchdog baseado em setTimeout interrompe a execução se exceder 200ms, protegendo contra padrões ReDoS (Regular Expression Denial of Service).

Recursos

Como usar

  1. 1

    Insira seu padrão

    Digite o padrão de regex sem barras dianteiras/traseiras — apenas o corpo do padrão. Use a sintaxe padrão de expressões regulares do JavaScript.

  2. 2

    Alterne flags conforme necessário

    g para global (encontrar todas as correspondências), i para sem distinção de maiúsculas/minúsculas, m para ^/$ correspondendo ao início/fim da linha, s para ponto correspondendo a quebras de linha, u para Unicode, y para correspondência sticky.

  3. 3

    Cole o texto de teste

    Digite um texto de amostra que deve corresponder (e alguns que não devem). As correspondências são destacadas ao vivo enquanto você edita. Clique em qualquer correspondência para ver detalhes.

  4. 4

    Revise correspondências e grupos

    Cada correspondência mostra o texto completo, a posição e todos os grupos de captura. Use isso para verificar se seu padrão extrai os dados corretos.

  5. 5

    Teste substituição (opcional)

    Mude para o modo de substituição para testar padrões de substituição. Use $1, $2 para referências de grupos de captura, $& para a correspondência total.

Casos de uso comuns

Desenvolvimento de padrões

Crie e refine padrões de regex para validação de dados, parse, extração e processamento de texto antes de adicionar ao código.

Depuração de problemas de regex

Quando um regex em seu código se comporta de forma inesperada, cole-o aqui com dados de amostra para isolar o problema.

Planejamento de extração de dados

Desenvolva padrões para parse de logs, web scraping ou limpeza de dados testando contra dados reais de amostra.

Teste de estratégia de substituição

Teste padrões find-and-replace com grupos de captura antes de aplicar a grandes conjuntos de dados ou código de produção.

Dicas e boas práticas

Perguntas frequentes

Ele suporta funcionalidades exclusivas do PCRE?
Usa o RegExp do JavaScript. Navegadores modernos suportam funcionalidades ES2018+: lookbehinds (?<=...), grupos nomeados (?<name>...) e escapes de propriedade Unicode \p{...}. Essas funcionam em navegadores atuais.
E quanto à injeção de regex se eu colar padrões não confiáveis?
O tempo limite de 200ms por tentativa de correspondência previne ataques de backtracking catastrófico (ReDoS). Padrões que rodariam para sempre são interrompidos com segurança.
Por que meu padrão corresponde de forma diferente do que em Python/PHP/Java?
Linguagens diferentes têm sabores de regex ligeiramente diferentes. O JavaScript falta algumas funcionalidades (grupos atômicos, quantificadores possessivos) e tem um comportamento ligeiramente diferente para alguns casos extremos. Esta ferramenta mostra o comportamento do JavaScript.
Posso salvar ou compartilhar meu regex?
Atualmente, padrões não são salveis na ferramenta. Copie o padrão e as flags manualmente para compartilhar ou salvar. Compartilhamento baseado em URL está no roadmap.

Ferramentas relacionadas