Testador de regex
Digite o padrão e veja o que ele pega, com os grupos.
A resposta aparece aqui enquanto você digita.
Guia: O padrão, o texto e o que ele pega2 min de leitura
O padrão, o texto e o que ele pega
Escreva a expressão regular no painel ao lado e cole o texto de teste. Cada ocorrência aparece marcada no próprio texto, e embaixo vem a lista com a posição de cada uma e o valor de cada grupo de captura, inclusive os nomeados. O exemplo que abre a página acha os e-mails de uma frase e ignora o que só parece e-mail.
Com “Substituir por” preenchido, a saída vira o texto com as ocorrências trocadas: $1 para o primeiro grupo, $<nome> para um grupo nomeado. É o jeito rápido de conferir um replace antes de rodar num arquivo inteiro — mascarar os últimos dígitos de telefones, reordenar datas de dd/mm para aaaa-mm-dd.
Por que um padrão pode travar
O motor de regex do JavaScript faz backtracking: quando uma tentativa falha, ele volta e tenta outro caminho. Com quantificadores aninhados, como (a+)+, o número de caminhos cresce exponencialmente com o tamanho do texto, e uma linha comum pode levar minutos. Aqui o teste roda num worker separado e é interrompido depois de um segundo, com o aviso. Se isso acontecer, reescreva o padrão: o mesmo problema derruba um servidor.
Nada é enviado
Padrão e texto ficam nesta aba, o que importa quando o texto é um log ou uma base com dados pessoais. Para comparar o antes e o depois de uma substituição, use o comparador de textos.
Perguntas frequentes
Que sintaxe de regex é essa?
A do JavaScript, a mesma do navegador e do Node.js, com a flag u ligada para Unicode e grupos nomeados funcionarem. Lookbehind, grupos nomeados e classes \p{…} funcionam; recursos só do PCRE, como quantificadores possessivos e recursão, não.
Por que o meu padrão parou por tempo?
Ele levou mais de um segundo, o que quase sempre é backtracking catastrófico: quantificadores aninhados como (a+)+ ou (.*)*, que tentam um número exponencial de caminhos. O teste roda num worker separado, então a página não trava. O mesmo padrão pode travar um servidor, e vale reescrever.
Como uso grupos de captura na substituição?
Preencha “Substituir por”: $1 é o primeiro grupo, $2 o segundo, $<nome> um grupo nomeado e $& a ocorrência inteira. A saída vira o texto com cada ocorrência trocada.
Por que a flag g fica sempre ligada?
Porque um testador serve para ver todas as ocorrências. As flags i, m e s são interruptores: ignorar maiúsculas, fazer ^ e $ valerem por linha e deixar o ponto pegar quebra de linha.
Meu texto é enviado para algum lugar?
Não. O padrão roda no seu navegador, num worker desta página, e nada é enviado — útil quando o texto é um log com dados pessoais.