onlinetools.dev

Testador de regex

Teste expressões regulares com destaque ao vivo de matches e grupos

Roda localmente
loading…
Sobre esta ferramenta

Escreva um padrão, cole um texto de exemplo, e cada match é destacado enquanto você digita — com grupos de captura, grupos nomeados e posições dos matches listados logo abaixo. O testador usa o motor RegExp do JavaScript, então o comportamento corresponde exatamente ao do Node.js e dos navegadores, incluindo lookbehind, grupos nomeados e escapes de propriedades Unicode.

As flags são ativadas letra a letra (g, i, m, s, u, y, d) e o padrão é compilado a cada tecla; erros de sintaxe aparecem imediatamente com a mensagem do próprio motor, em vez de só depois de apertar um botão. Padrões de match vazio como a* são tratados com segurança, e entradas descontroladas são limitadas a 10.000 matches, para que um .* perdido não congele a aba.

Dialetos de regex variam entre motores — um padrão que funciona aqui pode precisar de ajustes para PCRE, RE2 ou o módulo re do Python, principalmente em torno de suporte a lookbehind, quantificadores possessivos e flags inline.

Perguntas frequentes

Qual dialeto de regex este testador usa?
ECMAScript (JavaScript), conforme implementado pelo seu próprio navegador. Suporta lookahead, lookbehind, grupos de captura nomeados, backreferences e escapes de propriedades Unicode como \p{Letter} (com a flag u). Não suporta sintaxe exclusiva de PCRE, como quantificadores possessivos ou recursão.
Por que meu padrão casa com tudo / com nada?
As duas causas clássicas: um metacaractere sem escape (. casa com qualquer caractere — escape como \. para um ponto literal), ou esquecer mentalmente a flag g — este testador sempre encontra todos os matches, mas o seu código só vai encontrar o primeiro se g não estiver definida.
O que são grupos de captura nomeados?
A sintaxe (?<name>...) rotula um grupo para você ler os matches por nome em vez de posição: match.groups.name em JavaScript. O painel de grupos abaixo dos matches mostra capturas numeradas e nomeadas de cada match.
Uma regex daqui roda sem mudanças em Python ou Go?
Muitas vezes, mas nem sempre. Classes de caracteres, quantificadores e âncoras são portáveis; lookbehind, a sintaxe de grupos nomeados (Python usa (?P<name>...)) e flags inline diferem. O motor RE2 do Go, além disso, rejeita completamente backreferences e lookaround.
Ferramentas relacionadas