Testador de regex
Teste uma expressão regular em um texto de exemplo e veja cada correspondência, os grupos de captura e o resultado de uma substituição.
Funciona inteiramente no seu navegador
| # | Posição | Correspondência | Grupos |
|---|
Sintaxe de regex do JavaScript (ECMAScript), conforme o seu navegador a suporta. Texto de até 5 MB; as primeiras 1.000 correspondências são listadas e destacadas. Um padrão que roda por mais de 2 segundos é interrompido.
Como testar uma expressão regular
- Digite o padrão entre as barras e marque as flags de que precisa, como
gpara todas as correspondências ouipara ignorar maiúsculas e minúsculas. - Cole o texto de teste. As correspondências são destacadas enquanto você digita, e a tabela lista cada uma com a posição e os grupos de captura.
- Para conferir uma substituição, digite um texto de substituição como
$2-$1ou$<year>e leia o resultado logo abaixo.
Como testar padrões com segurança
Este testador de regex monta um RegExp JavaScript com o seu padrão e as suas flags e o executa em um worker em segundo plano, o mesmo motor que o seu código vai usar neste navegador. As correspondências voltam com a posição inicial e todos os grupos de captura, e a página as desenha sobre o seu texto com destaques alternados, para que correspondências vizinhas continuem distinguíveis. Uma correspondência vazia, como a que \b ou a* podem produzir, aparece como uma barra fina.
Executar o padrão em um worker é importante porque uma expressão regular pode levar tempo exponencial. Se um padrão ainda estiver rodando após 2 segundos, o worker é interrompido e você recebe uma mensagem em vez de uma aba travada. A mesma proteção vale para Localizar e substituir.
As posições são contadas em unidades de código UTF-16, que é como as strings do JavaScript contam: um emoji ou outro caractere fora do plano básico ocupa duas. A lista mostra as primeiras 1.000 correspondências; a contagem total acima dela inclui todas.
Dicas
- Quando o padrão funcionar, aplique-o a um documento inteiro com Localizar e substituir.
- Compare o texto antes e depois de uma substituição com Comparar textos.
- Buscando datas em um log? Transforme timestamps em horários legíveis com o Conversor de timestamp Unix.
Perguntas frequentes
Qual sabor (flavor) de regex é usado?
O do JavaScript, executado pelo motor do seu próprio navegador, então os resultados são exatamente os que o RegExp do seu navegador ou do Node.js retorna. A maior parte da sintaxe do dia a dia é igual à do PCRE, do Python e do Java, mas alguns recursos mudam: quantificadores possessivos e grupos atômicos não são suportados, e lookbehind, grupos nomeados e a flag v exigem um navegador atual.
Por que só aparece uma correspondência?
Sem a flag g (global), uma regex JavaScript encontra só a primeira correspondência, e o replace troca só a primeira ocorrência. Marque g para encontrar todas. O testador segue a linguagem à risca, então o que você vê é o que o seu código vai fazer.
O que as flags fazem?
g encontra todas as correspondências, i ignora maiúsculas e minúsculas, m faz ^ e $ corresponderem em quebras de linha, s deixa o . corresponder a quebras de linha, u ativa o tratamento completo de Unicode, v é o modo Unicode mais novo com operações de conjunto, y (sticky) só corresponde na posição atual, e d registra o início de cada grupo, algo que o testador já usa para as posições dos grupos de qualquer forma.
Como uso grupos na substituição?
$1, $2 e assim por diante inserem grupos numerados, $<name> insere um grupo nomeado, $& insere a correspondência inteira, $` e $' inserem o texto antes e depois dela, e $$ escreve um cifrão literal.
Por que meu padrão parou com "demorou demais"?
Alguns padrões, como ^(a+)+$ em uma longa sequência de letras a que não termina como ele espera, fazem o motor testar um número enorme de formas de corresponder. Isso se chama backtracking catastrófico. O testador executa cada padrão em um worker em segundo plano e o interrompe após 2 segundos, para a página continuar utilizável. Reescreva repetições aninhadas como (a+)+ como a+.
Meu texto é enviado para algum lugar?
Não. O padrão e o texto ficam no seu navegador; a busca acontece no seu dispositivo, e nada é enviado ou armazenado.