Como testar expressões regulares online

· 5 min de leitura

Expressões regulares são uma das ferramentas mais poderosas em programação, e uma das mais frustrantes de dominar. Um testador de regex permite que voce construa e depure padrões interativamente em vez de executar seu código, verificar a saída e adivinhar o que deu errado. O loop de feedback cai de minutos por iteração para segundos.

Por que usar um testador de regex

Escrever regex no seu editor de código significa que voce só ve erros em tempo de execução. Um testador mostra:

Como testar regex online

  1. Digite seu padrão: digite o regex no campo de padrão. Alterne flags (g para global, i para insensível a maiúsculas, m para multilinha) conforme necessário.
  2. Cole seu texto de teste: digite o texto contra o qual voce deseja corresponder. As correspondencias destacam em tempo real.
  3. Veja resultados: veja todas as correspondencias com grupos de captura listados abaixo. Use o campo "Substituir por" para testar substituições.

Uma breve história das expressões regulares

Expressões regulares foram formalizadas pelo matemático Stephen Kleene em 1951 como uma notação para "eventos regulares" em seu trabalho sobre redes neurais. Elas saltaram da teoria para o uso prático quando Ken Thompson as implementou no editor de texto QED na Bell Labs em 1968, depois no editor ed (1969), e finalmente no utilitário grep (1973), cujo nome vem de "global / regular expression / print."

Perl, introduzido por Larry Wall em 1987, expandiu significativamente a sintaxe regex: quantificadores não-gulosos, lookahead, grupos nomeados, atalhos de classe de caracteres como \d e \w. A biblioteca Perl-Compatible Regular Expressions (PCRE), lançada em 1997, tornou-se o padrão de fato para a maioria das linguagens modernas.

Hoje, praticamente toda linguagem de programação tem suporte regex embutido, embora a sintaxe varie ligeiramente. O motor JavaScript (V8 no Chrome, SpiderMonkey no Firefox) é altamente otimizado e alimenta a maioria dos testadores regex online. PHP, Python (módulo re), e Java (java.util.regex) usam sintaxe intimamente relacionada mas não identica. Saber para qual sabor voce está escrevendo importa para recursos avançados.

Padrões regex comuns que vale a pena conhecer

Endereço de e-mail (básico):

[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}

URL:

https?://[^\s]+

Número de telefone (US):

\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}

Data (AAAA-MM-DD):

\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])

Endereço IP (IPv4):

\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b

Código de cor hex:

#(?:[0-9a-fA-F]{3}){1,2}\b

Slug (identificador seguro para URL):

^[a-z0-9]+(?:-[a-z0-9]+)*$

String com espaços aparados:

^\s*(.*?)\s*$

Diferenças de sabor entre linguagens

A sintaxe regex é principalmente portátil mas tem armadilhas:

Quando voce escreve um regex em um testador (quase sempre sabor JavaScript), confirme que a linguagem alvo suporta todos os recursos que voce usou antes de se comprometer com ele.

Armadilhas comuns

Quando NÃO usar regex

Regex é a ferramenta errada para alguns trabalhos:

Se voce se encontrar escrevendo um regex de mais de 100 caracteres com múltiplos grupos aninhados, voce provavelmente está resolvendo o problema errado.

Dicas para escrever melhor regex

Privacidade e dados de teste confidenciais

O testador regex roda inteiramente no seu navegador usando o motor RegExp nativo do JavaScript. O padrão que voce escreve, o texto de teste que voce cola e as correspondencias que voce ve permanecem todos no seu dispositivo. Nada é carregado, registrado ou analisado por qualquer servidor.

Isso importa porque o texto de teste regex frequentemente contém informações sensíveis: amostras de log de produção (com IDs de usuário reais, endereços IP, tokens de sessão), listas de e-mail puxadas de um CRM, dados de cliente formatados de maneiras incomuns. Testadores regex em nuvem roteiam tudo isso através de seus servidores, às vezes salvando para fins de "melhoria." Um testador baseado em navegador tem zero exposição para qualquer um deles.

Perguntas frequentes

Minha regex funcionará em outras linguagens de programação?

A maior parte da sintaxe regex é compartilhada entre JavaScript, Python, Java, PHP e outras. Padrões básicos (classes de caracteres, quantificadores, âncoras) funcionam em todos os lugares. Alguns recursos avançados como lookbehinds ou grupos nomeados diferem entre linguagens.

Meus dados de teste são enviados a um servidor?

Não. Toda a correspondência regex acontece localmente no seu navegador usando o mecanismo RegExp nativo do JavaScript. Nada é enviado a nenhum lugar.

Posso testar substituições?

Sim. Insira um padrão de substituição (usando $1, $2 etc. para grupos de captura) para ver o resultado de uma operação buscar-e-substituir em tempo real.

Isso funciona offline?

Sim. Depois que a página é carregada, a ferramenta funciona inteiramente no seu navegador sem precisar de conexão com a internet.