Regex Tester

Testador de Regex

Construa e teste expressões regulares com destaque ao vivo, grupos de captura e modo de substituição. Sabor JavaScript, executado totalmente no seu navegador.

Regex JavaScript / ECMAScript (o mesmo motor que o seu navegador usa para o RegExp nativo). É um superconjunto estrito de POSIX e tem grande sobreposição com Python re, Java Pattern e PCRE para os recursos comuns. Diferenças a observar: o JavaScript suporta lookahead/lookbehind, grupos nomeados (via /(?...)/) e as flags /u e /y. NÃO suporta quantificadores possessivos (a++, a*+), grupos atômicos ((?>...)) nem grupos branch-reset — esses são exclusivos de PCRE.

Não. A ferramenta inteira é JavaScript dentro desta página. Compilação do padrão, correspondência e substituição rodam todas no seu navegador através do construtor RegExp nativo. Abra DevTools → Network e observe — nenhuma requisição é enviada enquanto você digita. É seguro colar regex que correspondem a logs de produção, e-mails de clientes ou qualquer coisa que você não queira que uma ferramenta de servidor registre.

/ /
Correspondências
Explicação
Cheatsheet de regex
. Qualquer caractere (exceto quebra de linha; com a flag /s, também quebra de linha)
\d Qualquer dígito (0-9)
\D Qualquer não-dígito
\w Caractere de palavra (a-z, A-Z, 0-9, _)
\W Caractere que não é de palavra
\s Espaço em branco (espaço, tab, quebra de linha)
\S Não espaço em branco
\b Limite de palavra
^ $ Início / fim da string (ou da linha, com a flag /m)
* Zero ou mais do elemento anterior
+ Um ou mais do elemento anterior
? Zero ou um do elemento anterior (opcional)
{n,m} Entre n e m do elemento anterior
(...) capture group — salvo em $1, $2, …
(?:...) Grupo sem captura — útil para alternância sem capturar
(?<n>...) capture group nomeado — referenciado como $<n>
[abc] Classe de caracteres — qualquer um entre a, b ou c
[^abc] Classe de caracteres negada — qualquer caractere exceto a, b, c
a|b Alternância — corresponde a a ou b
(?=...) lookahead positivo — seguido por
(?!...) lookahead negativo — não seguido por
(?<=...) lookbehind positivo — precedido por
(?<!...) lookbehind negativo — não precedido por
$1 $<n> backreference na string de substituição — numerada ou nomeada

Por que usar o iKit Regex Tester

Feito para desenvolvedores que querem um playground de regex limpo e rápido, sem os anúncios, popups ou rastreadores de terceiros das ferramentas tradicionais.

Destaque de correspondências ao vivo

Digite o seu padrão e veja cada correspondência destacada no texto de teste em tempo real. Os capture groups aparecem ao lado, com o intervalo de índice e o conteúdo.

Correspondência + substituição na mesma ferramenta

Mude para o modo Substituição para pré-visualizar o resultado de String.replace, com suporte completo a backreferences numeradas $1/$2, grupos nomeados $ e $& para a correspondência inteira.

Todas as seis flags do JavaScript

Alterne global, case-insensitive, multilinha, dotall, unicode e sticky como chips — as mesmas flags do RegExp nativo, sem surpresas ao portar o seu padrão para o código.

Predefinições de padrões comuns

Predefinições de um clique para e-mail, URL, IPv4, telefone, data, cor hexadecimal e UUID — cada uma com um texto de exemplo para você ver exatamente o que casam.

Cheatsheet integrada

Grade de referência rápida para classes de caracteres, quantificadores, âncoras, grupos e lookarounds — recolhível, presente quando você precisa e oculta quando não.

Privacidade por design

Padrão, texto de teste e substituição ficam todos no seu navegador. Verificável em DevTools → Network: nenhuma requisição é enviada enquanto você digita. Seguro para logs de produção e dados de clientes.

Como a correspondência de regex realmente funciona

Expressões regulares parecem ruído de linha, mas o motor por trás delas é direto.

  1. 1

    Compilar o padrão

    Quando você escreve /foo/ em JavaScript ou chama new RegExp('foo'), o motor analisa o seu padrão em um autômato interno — uma máquina de estados que sabe percorrer o texto de entrada. A compilação acontece uma vez; a correspondência é rápida.

  2. 2

    Percorrer a string de entrada

    O motor move um cursor pelo seu texto de teste. A cada posição, tenta seguir o caminho do autômato. Um caractere que satisfaz o estado atual avança ambos os cursores; uma incompatibilidade retrocede até um ponto de decisão anterior e tenta outro ramo.

  3. 3

    Capture groups

    Os parênteses no padrão abrem um capture group: quando o motor casa com sucesso dentro deles, lembra o que foi capturado, indexado como $1, $2 etc. Grupos nomeados (?<n>...) guardam sob um nome. Essas capturas aparecem no campo groups do objeto de correspondência.

  4. 4

    Substituir com backreferences

    String.replace(regex, replacement) percorre as mesmas correspondências, mas em vez de retorná-las, encaixa a string de substituição. $1 na substituição é o valor literal capturado pelo grupo 1 — assim você pode reformatar 2024-01-15 para 15/01/2024 com uma única regex.

Tarefas comuns com regex

Situações reais em que você vai recorrer a um testador de regex.

Validar formatos de e-mail ou URL

Construa um padrão no testador, cole entradas de exemplo (as reais e os casos extremos) e veja exatamente o que casa antes de comitar na validação do seu formulário. As predefinições oferecem um ponto de partida sensato que cobre 95% das entradas reais.

Limpar dados de log

Tem um arquivo de log com timestamps misturados, códigos de cor ANSI e endereços IP que você quer redigir? Use o modo Substituição com um padrão como \b(?:\d{1,3}\.){3}\d{1,3}\b e substituição [REDACTED] — pré-visualize o resultado antes de rodar com sed no arquivo real.

Refatorar código com find-and-replace via regex

O find-and-replace do seu IDE suporta regex, mas não mostra uma pré-visualização ao vivo em vários casos de teste. Construa o padrão aqui primeiro, com linhas de exemplo do seu código, verifique as capturas e a substituição, depois cole a regex funcionando no VS Code / IntelliJ.

Extrair dados estruturados

Precisa extrair todos os endereços de e-mail de um dump de contatos, ou todo valor em dólares de um recibo? Construa a regex de correspondência no iKit, copie-a para um script de uma linha (text.matchAll(re)) e você transformou uma tarefa de parsing ad-hoc em dez linhas de código.

Por que testar regex localmente importa

Padrões de regex frequentemente codificam informações sensíveis: a estrutura de IDs de clientes, endpoints internos de API, regras de senha ou campos de PII que você está tentando redigir. Colá-los numa ferramenta server-side — junto com dados de teste reais — vaza tanto o padrão quanto as entradas. O testador de regex do iKit é JavaScript já carregado na sua aba do navegador.

  • Zero requisições de rede durante a correspondência ou substituição — verificável no DevTools.
  • Padrões e textos de teste ficam na memória do navegador; limpos ao clicar em Limpar ou ao recarregar a página.
  • Seguro para padrões de redação de logs de produção, validação de dados de clientes e regex sensíveis à segurança.

Guias relacionados

Tutoriais aprofundados e comparações de ferramentas no blog do iKit.

Perguntas frequentes

Qual sabor de regex é suportado?

Regex JavaScript / ECMAScript (o mesmo motor que o seu navegador usa para o RegExp nativo). É um superconjunto estrito de POSIX e tem grande sobreposição com Python re, Java Pattern e PCRE para os recursos comuns. Diferenças a observar: o JavaScript suporta lookahead/lookbehind, grupos nomeados (via /(?...)/) e as flags /u e /y. NÃO suporta quantificadores possessivos (a++, a*+), grupos atômicos ((?>...)) nem grupos branch-reset — esses são exclusivos de PCRE.

Os meus padrões ou textos de teste são enviados para algum lugar?

Não. A ferramenta inteira é JavaScript dentro desta página. Compilação do padrão, correspondência e substituição rodam todas no seu navegador através do construtor RegExp nativo. Abra DevTools → Network e observe — nenhuma requisição é enviada enquanto você digita. É seguro colar regex que correspondem a logs de produção, e-mails de clientes ou qualquer coisa que você não queira que uma ferramenta de servidor registre.

Qual a diferença entre $1 e $<name> na substituição?

Ambos são backreferences na string de substituição. $1, $2, … referem-se aos capture groups numerados na ordem em que aparecem no padrão — (foo)(bar) faz $1 = 'foo', $2 = 'bar'. $ refere-se a um capture group nomeado declarado como (?...) — é mais legível e sobrevive a reordenações de grupos no padrão. O JavaScript também tem $& (a correspondência inteira), $` (texto antes da correspondência) e $' (texto depois da correspondência).

Por que o meu lookbehind não funciona?

Os lookbehinds (?<=...) e (?

Como faço match de emoji, caracteres acentuados ou escritas não latinas?

Ative o flag /u (unicode) e depois use Unicode property escapes dentro do seu pattern. `\p{L}` faz match com qualquer letra — incluindo ñ, é, 中, ก, ا. `\p{N}` faz match com qualquer dígito, incluindo numerais não latinos como ٠-٩. `\p{Emoji}` faz match com code points de emoji. Sem /u, o mesmo pattern falha silenciosamente em emoji com surrogate pair (qualquer coisa fora do BMP) e trata caracteres acentuados como base + combining marks separados. O flag /u diz ao motor para interpretar sua entrada como Unicode code points, não como UTF-16 code units brutos — então a maioria dos bugs de regex multilíngues desaparecem com um único toggle.