codekitto

Testador de regex

Digite o padrão, escolha as flags e cole um texto de exemplo. Os matches aparecem destacados enquanto você digita, com grupos, explicação de cada parte do padrão e erros claros — tudo no navegador, nunca na URL.

Flags

Digite um padrão para começar a testar.

Texto com destaque


  

Matches

Explicação do padrão

Digite um padrão válido para ver o que cada parte faz.

Código

Digite um padrão válido para ver o código.

O padrão e o texto ficam neste navegador. Nada é enviado nem colocado na URL.

Funciona no seu navegador. O que você cola não sai do seu dispositivo.

Como usar

  1. Digite a expressão regular no campo do padrão (sem as barras /…/ — só o padrão em si).
  2. Ligue ou desligue as flags: g para todos os matches, i para ignorar maiúsculas/minúsculas, m para ^/$ por linha, s para o . incluir quebra de linha, u para Unicode, y para sticky.
  3. Cole ou digite o texto de teste. Os matches aparecem destacados enquanto você digita; a lista abaixo mostra cada match, o índice e os grupos de captura (numerados e nomeados).
  4. Use Copiar matches para colocar cada match completo na área de transferência (um por linha). Limpar zera padrão, texto e flags.
  5. A Explicação do padrão quebra a regex em partes e diz, em português, o que cada uma casa.
  6. Em Código, escolha JavaScript, Python, Java, C#, PHP ou Go para ter o código pronto para colar, com o padrão e as flags, e avisos sobre o que essa linguagem não aceita.

Tudo roda no navegador. O padrão e o texto não são enviados a nenhum servidor e nunca vão para a URL da página.

Para que serve

Expressões regulares aparecem em validação de formulário, filtro de log, busca e substituição no editor, gateways de API e asserts de teste. Escrever o padrão de cabeça é fácil; provar contra um texto real é onde o erro aparece — ponto sem escape, quantificador guloso, flag esquecida. Um testador ao vivo encurta esse ciclo: mude o padrão, veja o destaque, confira os grupos, corrija.

A página serve a quem desenvolve, faz QA ou depura um filtro. Dá para colar um pedaço de log, uma lista de e-mails ou um trecho de HTML e afiar a expressão até o destaque bater com o esperado.

Os matches usam o motor JavaScript do navegador — as mesmas regras do front-end e do Node. Outros motores (PCRE, .NET, re do Python, RE2 do Go) diferem em detalhes, e o painel de código avisa as diferenças conhecidas.

Como funciona

A ferramenta monta um RegExp com o padrão e as flags marcadas. A cada alteração, aplica a expressão no texto. Com a flag g coleta todos os matches com String.prototype.matchAll; sem g (mesmo com y), mostra só o primeiro — o mesmo comportamento de um exec sem global. Padrão inválido mostra a mensagem de erro do navegador ao lado do Kitto confuso.

O destaque envolve cada trecho encontrado. Matches vazios (padrões que podem casar zero caracteres) também são marcados para você ver onde o motor parou. A busca roda numa thread separada (um Web Worker) com tempo limite de 2 segundos: se o padrão demorar mais, ela é interrompida e aparece um aviso, então a aba não trava. A lista mostra no máximo 500 matches.

O painel Código reescreve o padrão para cada motor: grupos nomeados viram (?P<nome>…) no Python e no Go, \u{…} vira \x{…} onde precisa, [^] vira [\s\S], e o padrão vai para o tipo de string com menos escapes (raw string, verbatim, crases). O que um motor não tem — lookaround e referência a grupo no Go, lookbehind de tamanho variável no Python e no PHP, a flag y fora do JavaScript — aparece como aviso acima do código.

Perguntas frequentes

O padrão ou o texto vai para um servidor?

Não. Compilar a expressão, achar matches, destacar e copiar acontecem no seu dispositivo. Nada entra na URL nem é enviado por esta página.

Por que aparece só um match?

Ligue a flag g (global). Sem ela, as APIs de regex do JavaScript devolvem só o primeiro match — o testador segue essa regra para espelhar o que seu código faria.

É a mesma regex do Python ou do PHP?

O testador roda o motor JavaScript, e a maior parte dos padrões do dia a dia se comporta igual nas outras linguagens. Escolha a sua em Código: ele converte a sintaxe e avisa o que não funciona lá. Mesmo assim, confirme padrões críticos na linguagem que você publica.

O que são grupos de captura?

Parênteses (…) guardam um pedaço do match. Grupos numerados aparecem como Grupo 1, Grupo 2 etc.; (?<nome>…) aparece como grupo nomeado. É o que $1 / match[1] / groups.nome expõem no código.

Um padrão ruim pode travar o navegador?

Não. Padrões muito aninhados ou ambíguos, como (a+)+$, podem levar tempo exponencial (backtracking catastrófico). Aqui a busca roda num Web Worker: depois de 2 segundos ela é interrompida e aparece um aviso, enquanto a página continua respondendo. Se isso acontecer, simplifique o padrão; em produção, o mesmo padrão poderia travar um servidor também.

É seguro colar dados sensíveis?

Nesta página o conteúdo fica no navegador. Ainda assim, evite colar segredos reais em computador compartilhado; use amostras anonimizadas quando puder.