Ir para o conteúdo

Testar expressões regulares

Teste uma expressão regular JavaScript no seu texto, com destaque dos resultados em tempo real, grupos de captura e explicação em linguagem simples, direto no navegador.

Flavor de regex JavaScript (ECMAScript)O mesmo mecanismo do seu navegador, do Node.js e do Deno
//g

$1 ou $<nome> inserem um grupo, $& a correspondência inteira, $` e $' o texto antes e depois, $$ um cifrão.

As correspondências e os grupos de captura aparecem aqui.

Roda no seu navegador · sem uploadComo funciona

Como usar: Testador de regex

  1. 1

    Digite um padrão

    Digite a expressão regular sem as barras; as flags ficam nos botões logo abaixo.

  2. 2

    Adicione um texto de teste

    Cole o texto a ser analisado; as correspondências são destacadas e listadas com seus grupos de captura enquanto você digita.

  3. 3

    Confira a explicação

    Abra Explicação para ler cada token em linguagem simples e entender o que o padrão realmente faz.

  4. 4

    Veja uma prévia da substituição

    Digite um texto de substituição com $1 ou $<nome> para ver o resultado e depois copie o código na aba Código.

Limites e Pro

Grátis e sem cadastro: até 100.000 correspondências contadas, 2.000 destacadas e 200 listadas na tabela; o destaque funciona com textos de teste de até 200.000 caracteres, e cada execução é interrompida após 1,5 segundo.

O Pro remove os anúncios; o testador funciona da mesma forma em todos os planos. Ver o Pro

Sobre: Testador de regex

Este testador executa seu padrão com o mecanismo de expressões regulares do JavaScript (ECMAScript) que já vem no navegador, o mesmo usado pelo Node.js, pelo Deno, pelo Bun e por qualquer página da web. Por isso, o que corresponde aqui também corresponde no seu código. Digite um padrão e um texto de teste, e cada correspondência é destacada enquanto você digita, com uma tabela de posições, grupos de captura numerados e nomeados, e o início e o fim de cada grupo quando a flag d está ativada.

As oito flags podem ser ativadas e desativadas: g para todas as correspondências, i para ignorar maiúsculas e minúsculas, m para que ^ e $ funcionem por linha, s para que o ponto também corresponda a quebras de linha, u para Unicode completo e escapes de propriedade \p{…}, v para conjuntos Unicode com interseção e subtração dentro de colchetes, y para correspondência sticky e d para índices. O campo Substituir por mostra uma prévia de String.prototype.replace com $1, $<nome>, $& e os demais tokens de substituição, e a aba Código traz os trechos prontos com literal, matchAll e RegExp().

A aba Explicação divide o padrão em tokens e diz em linguagem simples o que cada um faz: grupos, lookarounds, classes de caracteres, quantificadores e se eles são gananciosos ou preguiçosos. Já o Guia rápido insere tokens comuns na posição do cursor.

A correspondência roda em um Web Worker em segundo plano, com limite de 1,5 segundo. Um padrão com backtracking catastrófico, como (a+)+b aplicado a uma longa sequência de letras a, é interrompido com uma explicação, em vez de travar a aba. Padrões escritos para PCRE, Python ou .NET podem precisar de ajustes: quantificadores possessivos, grupos atômicos, recursão, \A e \Z não existem em JavaScript.

Privacidade

Padrões e textos de teste ficam nesta aba do navegador: a correspondência acontece em um Web Worker local e nada do que você digita é enviado, registrado ou armazenado, então é seguro testar com linhas de log reais ou dados de clientes.

Recursos

O mecanismo JS de verdade

Corresponde exatamente como o RegExp nos navegadores e no Node.js, incluindo conjuntos da flag v e grupos nomeados.

Explicação token por token

Cada grupo, classe, âncora e quantificador descrito em linguagem simples.

Proteção contra backtracking

A correspondência roda em um worker com limite de 1,5 segundo, então um padrão ruim não trava a página.

Testador de regex: perguntas frequentes

Qual variante de regex este testador usa?
A do JavaScript, conforme definida pelo padrão ECMAScript e implementada pelo navegador que você está usando. Ela aceita lookbehind, grupos nomeados, escapes de propriedade Unicode e a flag v, mas não recursos do PCRE como quantificadores possessivos, grupos atômicos, recursão ou condicionais. A sintaxe (?P<nome>…) do Python deve ser escrita (?<nome>…) aqui. Os resultados coincidem com os do Node.js e do Deno na mesma versão do mecanismo.
Por que meu padrão só encontra a primeira correspondência?
Sem a flag g, o JavaScript para depois da primeira correspondência: exec e match retornam um único resultado e replace altera apenas a primeira ocorrência. Ative g para encontrar e substituir todas as correspondências. A flag sticky y é diferente: ela só corresponde na posição exata em que a correspondência anterior terminou, o que é útil para tokenizadores.
O que é backtracking catastrófico?
Quando um padrão pode corresponder ao mesmo texto de várias maneiras, como em quantificadores aninhados do tipo (a+)+ ou (.*)*, uma correspondência que falha faz o mecanismo tentar todas as combinações, e isso cresce exponencialmente com o tamanho do texto. Aqui, a execução é interrompida após 1,5 segundo com um aviso. Para corrigir, torne as alternativas mutuamente exclusivas, por exemplo [^,]* em vez de .* antes de uma vírgula.
Como uso grupos de captura na substituição?
Escreva $1, $2 e assim por diante para grupos numerados, ou $<nome> para um grupo nomeado, como (?<ano>\d{4}). $& insere a correspondência inteira, $` o texto antes dela e $' o texto depois, e $$ produz um cifrão literal. Testar um exemplo carrega um padrão de data que reordena ano, mês e dia dessa forma.
Quando preciso da flag u ou v?
Use u quando o texto tiver emoji ou outros caracteres fora do Plano Multilíngue Básico, para que o ponto e os quantificadores os tratem como um único caractere, e para usar propriedades Unicode como \p{L}. A flag v, mais nova, inclui tudo o que u faz e acrescenta operações de conjunto dentro de colchetes, como [\p{L}--[a-z]] para letras não ASCII. As duas flags não podem ser combinadas.