Testador de Expressões Regulares (Regex)

Teste expressões regulares contra qualquer texto diretamente no navegador. Veja todos os matches, índices e grupos capturados. Suporta flags g, i, m, s, u, y. Processamento 100% local.

Revisão técnica: Cesar Gargiulo (segurança da informação)
Valim, o mascote do ValorFinal, representando a categoria Tecnologia

Máximo: 300 caracteres

Flags

Exemplo carregado: troque o padrão e o texto pelos seus e teste de novo. Máximo: 5.000 caracteres

Processamento 100% local. Nenhum texto ou padrão é enviado para servidor. O teste roda em segundo plano, com limite de 2 segundos: se o padrão entrar em backtracking catastrófico, a execução é interrompida e a página continua respondendo.

1 match encontrado

Padrão: /(\d{2})/(\d{2})/(\d{4})/g

Matches encontrados

#1
23/09/2026índice: 31grupos: ["23", "09", "2026"]

Compartilhar ou salvar

Sintaxe de regex testada num texto de exemplo

Deslize a tabela para o lado: são 4 colunas.

Padrões de expressão regular com o que cada um encontra, o número de ocorrências e a primeira ocorrência num texto de exemplo de três linhas, calculados pelo motor desta página
PadrãoO que encontraOcorrênciasPrimeira ocorrência
/\d/gUm dígito de 0 a 9364
/\d+/gUm ou mais dígitos seguidos114521
/\d{5}-\d{3}/gCEP com hífen: 5 dígitos, hífen e 3 dígitos201310-100
/(\d{2})/(\d{2})/(\d{4})/gData dd/mm/aaaa, com dia, mês e ano em três grupos123/09/2026
/(?<reais>\d+),(?<centavos>\d{2})/gValor com vírgula, em dois grupos nomeados1189,90
/de \w+/gPalavra depois do "de" com \w, que para no ã1de Jo
/de \p{L}+/guA mesma palavra com \p{L}, que aceita acento (exige a flag u)1de João
/^\w+/gPrimeira palavra do texto inteiro1Pedido
/^\w+/gmPrimeira palavra de cada linha (flag m)3Pedido
/pix/gA palavra pix escrita em minúsculas0nenhuma
/pix/giPix com qualquer combinação de maiúsculas (flag i)1Pix
/.+/gTudo até a quebra de linha3Pedido 4521 de João enviado... (63 caracteres)
/.+/gsTudo, atravessando as quebras de linha (flag s)1Pedido 4521 de João enviado... (118 caracteres)
/(?<=R\$ )[\d,]+/gO número que vem depois de R$ (lookbehind)1189,90
/\d+(?=-)/gDígitos seguidos de um hífen (lookahead)201310
/\(\d{2}\) \d{4,5}-\d{4}/gTelefone com DDD entre parênteses1(11) 98765-4321

Todas as linhas usam o mesmo texto de exemplo, que tem 3 linhas (separadas aqui por barra): Pedido 4521 de João enviado em 23/09/2026 para o CEP 01310-100. / Total: R$ 189,90 pago no Pix. / Contato: (11) 98765-4321

Em resumo

O testador compila o seu padrão com a engine de regex do JavaScript e devolve cada ocorrência com o índice e os grupos de captura. Ele aceita 6 flags (g, i, m, s, u e y), e a g fica sempre ligada para que todas as ocorrências apareçam. As flags d e v, as mais novas do JavaScript, ficam de fora. O padrão aceita até 300 caracteres e o texto até 5.000; a lista mostra no máximo 200 ocorrências.

O teste roda num Web Worker, com limite de 2 segundos. O limite existe por causa do backtracking catastrófico: em padrões como (a+)+, o tempo cresce de forma exponencial com o texto, e só encerrar o Worker interrompe uma regex em execução. Na tabela acima, o mesmo texto de 3 linhas mostra o efeito das flags: ^\w+ encontra 1 ocorrência sem a flag m e 3 com ela, e .+ encontra 3 sem a flag s e 1 com ela. Nada do que você digita sai do navegador.

Outras ferramentas de código e expressões

  • Formatador de códigoFormate e minifique JavaScript, CSS, HTML, XML, SQL e YAML sem mudar o que o código faz. Cada linguagem diz na tela o que a operação garante. Tudo no seu navegador.
  • Interpretador de cronInterprete expressões cron em linguagem natural e veja as próximas execuções estimadas. Suporta os 5 campos padrão: minuto, hora, dia do mês, mês e dia da semana. Processamento 100% local.
  • Comparador de textoCompare dois textos, JSON ou trechos de código no navegador e veja linhas adicionadas, removidas e alteradas. Ignora espaços e maiúsculas. 100% local.
  • Editor de MarkdownEscreva Markdown e veja a prévia no navegador, com contagem de palavras, títulos e links, e download em .md. A prévia é segura, sem HTML bruto. 100% local.
  • Teste de velocidadeMeça download, upload, ping, jitter e a latência com a rede cheia. Veja se a conexão aguenta chamada de vídeo, 4K e jogo online, e quanto do plano contratado chegou.
  • Cronômetro onlineCronômetro online com centésimos e voltas: parcial, total, a volta mais rápida e a mais lenta, cópia para planilha e CSV, tela cheia e atalhos de teclado. Mede pelo relógio interno do navegador e não atrasa com a aba em segundo plano.

Todas as ferramentas, por tarefa, estão em ferramentas de tecnologia online.

Gostou? Mostre pra todo mundo

Gere um card bonito com a marca do ValorFinal para postar nos Stories ou mandar no WhatsApp. Nada que você digitou aparece no card.

Coloque no seu site

O padrão que você digita é compilado com new RegExp(padrão, flags) e aplicado ao texto de teste com String.matchAll(). A página devolve cada ocorrência, o índice onde ela começa, os grupos de captura e os grupos nomeados. Tudo roda no seu navegador, dentro de um Web Worker com tempo limite, e nada é enviado para servidor.

Como funciona o testador de regex

A engine é a do próprio JavaScript (ECMAScript), a mesma do Node e dos navegadores. Isso importa na hora de comparar resultados: PCRE, RE2, Python e Go têm diferenças reais, como recursão, quantificador possessivo e lookbehind de tamanho variável. Um padrão que funciona aqui pode se comportar de outro jeito na sua linguagem.

As flags mudam o significado do padrão. g procura todas as ocorrências e é sempre ligada aqui; i ignora a diferença entre maiúscula e minúscula; m faz ^ e $ valerem por linha; s faz o ponto casar a quebra de linha; u liga o modo Unicode, necessário para \p{L}; y prende a busca à posição atual.

A execução acontece em um Web Worker separado, com limite de 2 segundos. Um regex já em execução não pode ser interrompido de dentro da própria thread, nem por try/catch nem por temporizador: ele simplesmente não termina. Encerrar o Worker é a única forma de recuperar a página, e é o que acontece quando o tempo estoura.

Para converter o resultado em outros formatos ou testar codificações, veja também as ferramentas DevOps. Para contar caracteres e palavras do texto que você está testando, use o contador de caracteres.

Método

matches = [...texto.matchAll(new RegExp(padrão, flags))]

índice = match.index · grupos = match.slice(1) · nomeados = match.groups

Base: especificação ECMAScript (RegExp) e a engine nativa do navegador. Execução local, sem envio de dados.

Limitações

  • Usa a engine de JavaScript. Não reproduz recursão, quantificador possessivo, grupo atômico nem verbos de controle de PCRE, e não simula o comportamento linear de RE2.
  • Mostra no máximo 200 ocorrências e aceita 5.000 caracteres de texto, para não travar o navegador com listas gigantes.
  • O tempo limite protege esta página, não o seu sistema. Um padrão que estoura o tempo aqui continua sendo uma porta de negação de serviço no seu servidor.
  • Não substitui teste automatizado: use os casos daqui como base para os testes do seu próprio código.

Coloque esta ferramenta no seu site, de graça

Tem site, blog ou loja virtual? Esta ferramenta tem uma versão para incorporar: você copia um código e cola no seu HTML. Sem cadastro, sem mensalidade e sem limite de acessos, e ela roda no navegador de quem visita o seu site.

Testador de regex para sitever todas as ferramentas para site

Calculadoras relacionadas

Guias sobre este tema

ValorFinal VIP: Sem anúncios, até 500 cenários salvos e comparação de cenários lado a lado.

Ferramenta transparente, com o método explicado

Atualizado em . Fontes: ECMAScript Specification / MDN Web Docs / OWASP (ReDoS).

Processamento local: esta ferramenta roda no seu navegador e nada é enviado a servidores automaticamente.

Como validamos

Referências técnicas

Links externos para o que foi consultado na construção desta página, com a natureza de cada fonte identificada. O conteúdo delas pode mudar sem aviso; em caso de divergência, vale sempre a fonte primária.

Incorpore esta calculadora no seu site (grátis)

Copie e cole o código no seu site. A calculadora se atualiza sozinha. O crédito ao ValorFinal vem junto do código e a gente agradece quem mantém, mas ele é opcional: pode remover sem perder o widget. O link sai com rel="nofollow", ou seja, não transfere autoridade de busca para a gente.

Perguntas frequentes

O que é uma expressão regular (regex)?

Uma expressão regular, ou regex, é um padrão de texto usado para encontrar, validar ou substituir sequências de caracteres. O padrão '\d{3}-\d{4}', por exemplo, encontra números no formato 000-0000, e '\d{5}-\d{3}' encontra um CEP escrito com hífen. Regex existe em quase toda linguagem de programação, em editores como o VS Code e em comandos como grep e sed. A sintaxe básica é parecida em todos eles, mas os recursos avançados mudam de uma implementação para outra.

O que são as flags de regex?

Flags mudam o comportamento do padrão. A g encontra todas as ocorrências, e não só a primeira; a i ignora a diferença entre maiúscula e minúscula; a m faz ^ e $ valerem no começo e no fim de cada linha; a s faz o ponto casar também a quebra de linha; a u liga o modo Unicode, necessário para \p{L}; a y prende a busca à posição onde a anterior terminou. Nesta página a g fica sempre ligada. No texto de exemplo da tabela, ^\w+ acha 1 ocorrência sem a m e 3 com ela.

O que são grupos de captura em regex?

Grupos de captura são as partes do padrão entre parênteses. Eles guardam o trecho que casou para você usar depois, numa substituição ou no código. Em '(\d{4})-(\d{2})' aplicado a '2026-05', o grupo 1 captura '2026' e o grupo 2 captura '05'. Grupos nomeados usam a forma (?<nome>padrão) e aparecem pelo nome: na tabela desta página, (?<reais>\d+),(?<centavos>\d{2}) separa o valor do texto em reais = 189 e centavos = 90. Para agrupar sem capturar, use (?:padrão).

O que é ReDoS (Regex Denial of Service)?

ReDoS acontece quando uma regex com backtracking catastrófico roda contra um texto que quase casa: o motor testa um número exponencial de caminhos, e o tempo explode a cada caractere a mais. Padrões como '(a+)+' ou '([a-z]+)+@' são o caso clássico, e algumas dezenas de caracteres bastam para travar uma aba. Esta página roda o teste num Web Worker separado, com limite de 2 segundos, e encerra o Worker quando o tempo estoura. Esse limite protege a página, não o seu sistema: um padrão que estoura aqui continua sendo uma porta de negação de serviço no seu servidor.

Por que o teste roda em segundo plano e não na própria página?

Porque uma expressão regular já em execução não pode ser interrompida de dentro da mesma thread. Nem try/catch nem temporizador funcionam: o try/catch só age quando algo lança exceção, e backtracking catastrófico não lança nada, apenas não termina. Enquanto isso, a thread está presa no regex e não processa cliques nem temporizadores. Rodando em um Web Worker, a página continua livre e consegue encerrar o Worker, que é a única forma real de cancelar a execução.

Meus dados são enviados para algum servidor?

Não. O padrão e o texto de teste são processados no próprio navegador, pela engine de regex nativa do JavaScript, dentro de um Web Worker da mesma página. Nada é transmitido para servidor, nada fica gravado, e a lista de ocorrências some quando você fecha a aba. Por isso dá para testar padrões contra trechos de log ou de planilha interna sem expor o conteúdo. Com a página já carregada, a ferramenta continua funcionando mesmo sem conexão.

Esta ferramenta executa código do meu input?

Não. O padrão é tratado como texto e compilado pela engine de regex do JavaScript com new RegExp(padrão, flags). A página não usa eval() nem nada parecido, e o resultado aparece como texto comum, sem ser interpretado como HTML. Um padrão malformado, como um parêntese sem fechar, só produz a mensagem Regex inválida, com a explicação da própria engine. O pior que um padrão consegue fazer é demorar demais, e para isso existe o limite de 2 segundos do Web Worker.

Por que \w não encontra letras com acento, como ç e ã?

Porque no JavaScript o \w é só [A-Za-z0-9_]: letras sem acento, dígitos e sublinhado. O ç, o ã e o é ficam de fora, e uma palavra como João é cortada em dois pedaços. Para aceitar letra com acento, use \p{L}, que casa qualquer letra de qualquer alfabeto, e ligue a flag u, sem a qual o \p{L} não funciona. Na tabela desta página, 'de \w+' devolve 'de Jo', e 'de \p{L}+' com a flag u devolve 'de João'. Para incluir também dígitos e sublinhado, use [\p{L}\p{N}_].

Uma regex que funciona aqui funciona no Python, no Java ou no PHP?

Nem sempre. Esta página usa a engine do JavaScript, a mesma do Node e dos navegadores. O básico, como classes de caracteres, quantificadores e grupos, funciona igual no Python, no Java e no PHP. As diferenças aparecem nos recursos avançados: o PCRE, que o PHP usa, tem quantificador possessivo e recursão, que o JavaScript não tem; o RE2, usado no Go, não aceita lookahead, lookbehind nem retrovisor, em troca de tempo de execução linear. Teste na linguagem de destino antes de levar o padrão para produção.

Como fazer uma regex de CEP, CPF ou data?

Para o CEP com hífen, use \d{5}-\d{3}, ou \d{5}-?\d{3} para aceitar também sem hífen. Para o CPF formatado, \d{3}\.\d{3}\.\d{3}-\d{2}, com o ponto escapado, porque o ponto sozinho casa qualquer caractere. Para a data, \d{2}/\d{2}/\d{4}. A regex confere o formato, não a validade: 31/02/2026 passa no padrão de data, e um CPF com dígito verificador errado passa no de CPF. Conferir os dígitos exige uma conta, e regex não faz conta.

O que significam índice e grupos na lista Matches encontrados?

São os detalhes de cada item da lista. O índice é a posição do primeiro caractere da ocorrência, contada a partir de zero: índice 0 é o começo do texto. Grupos mostra, entre colchetes, o que cada grupo de captura guardou, na ordem em que os parênteses abrem no padrão; (?:...) e lookaround não entram. Um traço aparece quando o grupo existe mas não participou daquela ocorrência, como numa alternativa que não foi usada. A busca para em 200 ocorrências: com mais do que isso, a lista e o contador no alto mostram 200.

O que quer dizer o aviso de quantificador dentro de outro?

É a caixa amarela que aparece quando o padrão tem um quantificador dentro de outro, como (a+)+ ou (\d*)*. O teste roda normalmente, e o aviso só explica o risco: contra um texto que quase casa, esse formato faz o motor testar caminhos em número exponencial, que é a causa do ReDoS. Muitos padrões assim funcionam bem na prática, por isso a página avisa em vez de recusar. Para tirar o risco, reescreva o grupo interno sem o quantificador ou use um grupo atômico na linguagem de destino, quando ela tiver.