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
- Destaques de correspondência ao vivo no texto de teste
- Todos os resultados de correspondência com grupos de captura listados
- Alterne flags: g, i, m, s, u, y
- Modo de substituição: teste cadeias de substituição com $1/$2
- Captura padrões malformados com erros claros
- Tempo limite de 200ms impede congelamento por padrões ruins
- Sintaxe de expressões regulares do JavaScript (funcionalidades ES2018+ suportadas)
Como usar
- 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
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
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
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
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
- Sempre teste com casos extremos: strings vazias, strings que não devem corresponder e casos de fronteira
- A flag 's' (dotAll) é frequentemente negligenciada — sem ela, o ponto . não corresponde a quebras de linha, o que surpreende muitos desenvolvedores
- Use grupos não capturadores (?:...) quando não precisar extrair o conteúdo do grupo — eles são mais eficientes
- Classes de caracteres como [a-z] dentro de uma expressão regular do JavaScript com a flag 'u' lidam com Unicode corretamente; sem 'u', elas podem não corresponder a letras não ASCII