O que é Regex? Guia Completo de Expressões Regulares com Exemplos
Regex (Regular Expression), ou Expressão Regular, é uma sequência de caracteres utilizada para localizar, validar, extrair ou substituir padrões dentro de um texto.
As expressões regulares são suportadas por praticamente todas as linguagens de programação modernas, como JavaScript, Python, PHP, Java, C#, Go e muitas outras.
Você provavelmente já utilizou Regex sem perceber, seja para validar um e-mail, verificar um CPF, encontrar números em um texto ou substituir caracteres automaticamente.
Índice
- Como funciona
- Principais operadores
- Classes de caracteres
- Quantificadores
- Exemplos práticos
- Flags
- Erros comuns
- Boas práticas
- Perguntas frequentes
- Experimente nossa ferramenta
Como funciona uma expressão regular?
Uma Regex descreve um padrão que será comparado com um texto.
Por exemplo:
abc
Essa expressão encontra exatamente a sequência abc.
Já a expressão:
a.c
Encontra: abc, a1c, a-c, a c
Pois o ponto (.) representa qualquer caractere, exceto quebra de linha (na maioria das implementações).
Principais operadores
Ponto (.)
Representa qualquer caractere.
a.c
Encontra: abc, axc, a9c
Início da linha (^)
^Olá
Encontra apenas textos que começam com Olá.
Final da linha ($)
Brasil$
Encontra apenas textos que terminam com Brasil.
OU (|)
gato|cachorro
Encontra: gato ou cachorro.
Agrupamento ()
(ab)+
Encontra: ab, abab, ababab
Escape (\)
Para usar caracteres especiais literalmente:
\.\*\+
Encontra literalmente: . * +
Classes de caracteres
| Classe | Descrição | Equivalente |
|--------|-----------|-------------|
| \d | Dígitos | [0-9] |
| \D | Não-dígitos | [^0-9] |
| \w | Letras, números e _ | [A-Za-z0-9_] |
| \W | Não-word | [^A-Za-z0-9_] |
| \s | Espaços em branco | [ \t\n\r\f] |
| \S | Não-espaços | [^ \t\n\r\f] |
Classes personalizadas
[aeiou] → qualquer vogal
[A-Z] → letra maiúscula
[0-9a-f] → hexadecimal
[^0-9] → qualquer coisa exceto número
Quantificadores
| Quantificador | Descrição | Exemplo | Match |
|---------------|-----------|---------|-------|
| + | Um ou mais | a+ | a, aa, aaa |
| * | Zero ou mais | ab* | a, ab, abb |
| ? | Opcional (0 ou 1) | https? | http, https |
| {n} | Exatamente n | \d{4} | 2026, 1999 |
| {n,m} | De n a m | \d{2,5} | 12, 123, 12345 |
| {n,} | No mínimo n | \d{3,} | 123, 1234, 12345 |
Exemplos práticos
Validar CEP brasileiro
^\d{5}-?\d{3}$
Aceita: 01001000, 01001-000
Encontrar números em texto
\d+
Texto: Pedido 1456 → Resultado: 1456
Validar e-mail (simplificado)
^[^\s@]+@[^\s@]+\.[^\s@]+$
Aceita: usuario@email.com
Observação: validar todos os formatos possíveis de e-mail apenas com Regex é complexo. Uma validação simples combinada com confirmação por e-mail é geralmente a melhor abordagem.
Encontrar URLs HTTP e HTTPS
https?:\/\/[^\s]+
Apenas números
^\d+$
Apenas letras (incluindo acentos)
^[A-Za-zÀ-ÿ]+$
Extrair números de telefone
\(?\d{2}\)?\s?\d{4,5}-?\d{4}
Encontra: (11) 99999-9999, 11 99999-9999, 11999999999
Flags
As flags modificam o comportamento da expressão.
| Flag | Nome | Descrição |
|------|------|-----------|
| g | Global | Encontra todas as ocorrências |
| i | Case-insensitive | Ignora maiúsculas/minúsculas |
| m | Multiline | ^ e $ funcionam por linha |
| s | DotAll | . corresponde a quebras de linha |
| u | Unicode | Suporte completo a Unicode |
Exemplo em JavaScript
const regex = /\d+/g;
const texto = "Pedido 1456 - Cliente 87";
const resultado = texto.match(regex);
console.log(resultado);
// Resultado: ["1456", "87"]
Exemplo de substituição
const telefone = "(11) 99999-9999";
const numeros = telefone.replace(/\D/g, "");
console.log(numeros);
// Resultado: "11999999999"
Exemplo com test()
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
const valido = emailRegex.test("usuario@email.com");
console.log(valido);
// Resultado: true
Onde Regex é utilizada?
Expressões regulares são muito comuns em:
- Validação de formulários
- Busca de texto em editores de código
- APIs e middlewares de validação
- Bancos de dados (PostgreSQL, MySQL)
- Processamento de arquivos e logs
- ETL (Extract, Transform, Load)
- Web scraping
- Automação de tarefas
Erros comuns
Tentar resolver tudo com Regex
Regex é excelente para padrões, mas nem sempre é a melhor solução para problemas complexos. Às vezes, uma combinação de código e validações adicionais torna a solução mais simples e fácil de manter.
Criar expressões difíceis de entender
Regex muito longas podem se tornar praticamente impossíveis de manter. Sempre que possível:
- Documente a expressão com comentários
- Divida problemas complexos em etapas
- Escreva testes automatizados
Não testar casos extremos
Uma Regex pode funcionar para os exemplos mais comuns e falhar em entradas inesperadas. Sempre teste:
- Valores vazios
- Caracteres especiais
- Acentos e Unicode
- Diferentes tamanhos de texto
- Quebras de linha
Backtracking catastrófico
Expressões mal construídas com quantificadores aninhados (como (a+)+) podem causar lentidão extrema. Evite padrões ambíguos.
Boas práticas
✔ Escreva expressões simples sempre que possível
✔ Teste diferentes cenários e edge cases
✔ Documente Regex complexas com comentários
✔ Evite padrões excessivamente genéricos (como .*)
✔ Utilize ferramentas para visualizar e testar suas expressões antes de usar em produção
✔ Prefira validações em etapas a uma única Regex gigante
✔ Use grupos nomeados para facilitar a leitura: (?<ano>\d{4})
Perguntas Frequentes
Regex funciona em todas as linguagens?
A maioria das linguagens suporta expressões regulares, mas algumas diferenças de sintaxe e recursos podem existir entre as implementações (PCRE, POSIX, JavaScript RegExp).
Regex é difícil de aprender?
No início pode parecer complicada, mas conhecendo os principais operadores e praticando com exemplos, torna-se uma ferramenta extremamente útil.
Regex é rápida?
Sim, na maioria dos casos. Entretanto, expressões muito complexas ou mal projetadas podem afetar o desempenho, especialmente em textos grandes (backtracking catastrófico).
Posso validar CPF ou CNPJ apenas com Regex?
Você pode validar o formato, mas não consegue validar os dígitos verificadores apenas com Regex. Para uma validação completa é necessário aplicar o algoritmo correspondente.
Como testar uma expressão regular?
Você pode utilizar nossa ferramenta Regex Tester para escrever, testar e visualizar correspondências em tempo real.
Qual a diferença entre * e +?
*aceita zero ou mais ocorrências (o elemento pode não existir)+exige uma ou mais ocorrências (pelo menos uma é obrigatória)
Conclusão
Regex é uma das ferramentas mais poderosas para trabalhar com texto. Saber utilizá-la corretamente permite validar dados, localizar padrões, realizar substituições e automatizar diversas tarefas de forma eficiente.
Embora pareça complexa no início, dominar seus principais operadores e praticar com exemplos reais faz toda a diferença no dia a dia de qualquer desenvolvedor.
Experimente nossa ferramenta
Teste suas expressões regulares gratuitamente com o Regex Tester do Toolbox Brasil:
- Destaque das correspondências em tempo real
- Suporte às principais flags (g, i, m)
- Interface simples e intuitiva
- Ideal para aprender, validar e depurar Regex
Tudo diretamente no navegador.