Expressões Regulares (Regex)
O que são Expressões Regulares?
As Expressões Regulares (ou Regex) são sequências de caracteres que formam um padrão de busca. Elas são uma ferramenta poderosa para encontrar, validar, extrair e manipular texto de forma precisa e eficiente.
Conceitos Básicos
Metacaracteres Fundamentais
.- Corresponde a qualquer caractere (exceto quebra de linha)*- Zero ou mais ocorrências do caractere anterior+- Uma ou mais ocorrências do caractere anterior?- Zero ou uma ocorrência do caractere anterior^- Início da linha$- Fim da linha[]- Conjunto de caracteres()- Grupo de captura|- Operador OU
Classes de Caracteres
\d- Qualquer dígito (0-9)\w- Qualquer caractere de palavra (a-z, A-Z, 0-9, _)\s- Qualquer espaço em branco\D- Qualquer não-dígito\W- Qualquer não-caractere de palavra\S- Qualquer não-espaço em branco
Exemplos Práticos
📧 Validação de E-mail
Padrão básico para validar endereços de e-mail:
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
Explicação:
^- Início da string[a-zA-Z0-9._%+-]+- Um ou mais caracteres válidos antes do @@- O símbolo @ literal[a-zA-Z0-9.-]+- Um ou mais caracteres válidos para o domínio\.- O ponto literal[a-zA-Z]{2,}- Pelo menos 2 letras para a extensão$- Fim da string
📞 Telefone Brasileiro
Padrão para telefones brasileiros com DDD:
^\(?([1-9]{2})\)?\s?9?[0-9]{4}-?[0-9]{4}$
Explicação:
^\(?- Início, parêntese opcional([1-9]{2})- DDD com 2 dígitos de 1-9\)?\s?- Parêntese de fechamento e espaço opcionais9?- Nono dígito opcional (celular)[0-9]{4}-?[0-9]{4}$- 4 dígitos, hífen opcional, 4 dígitos
💳 CPF
Padrão para validar formato de CPF:
^\d{3}\.?\d{3}\.?\d{3}-?\d{2}$
Explicação:
^\d{3}- Início com 3 dígitos\.?- Ponto opcional\d{3}- 3 dígitos\.?- Ponto opcional\d{3}- 3 dígitos-?- Hífen opcional\d{2}$- 2 dígitos e fim
🌐 URL/Link
Padrão para validar URLs:
^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&\/=]*)$
Explicação:
^https?- Protocolo HTTP ou HTTPS:\/\/- ://(www\.)?- www. opcional[-a-zA-Z0-9@:%._\+~#=]{1,256}- Domínio\.- Ponto literal[a-zA-Z0-9()]{1,6}- Extensão do domínio- Resto: parâmetros e caminhos opcionais
📅 Data (DD/MM/AAAA)
Padrão para datas no formato brasileiro:
^(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[0-2])\/([0-9]{4})$
Explicação:
^(0[1-9]|[12][0-9]|3[01])- Dia de 01 a 31\/- Barra literal(0[1-9]|1[0-2])- Mês de 01 a 12\/- Barra literal([0-9]{4})$- Ano com 4 dígitos
🕐 Horário (HH:MM)
Padrão para horários em formato 24h:
^([01]?[0-9]|2[0-3]):[0-5][0-9]$
Explicação:
^([01]?[0-9]|2[0-3])- Horas de 00 a 23:- Dois pontos literal[0-5][0-9]$- Minutos de 00 a 59
Exemplos Avançados
🏷️ Extrair Tags HTML
Padrão para extrair conteúdo de tags HTML:
<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)
Funcionalidade: Captura tags HTML completas com seus conteúdos
🌐 Endereço IP
Padrão para validar endereços IPv4:
^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
Funcionalidade: Valida IPs de 0.0.0.0 a 255.255.255.255
🔑 Senha Forte
Padrão para validar senhas seguras:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&.])[A-Za-z\d@$!%*?&.]{8,}$
Requisitos: Mínimo 8 caracteres, maiúscula, minúscula, número e símbolo
Dicas Importantes
✅ Boas Práticas
- Teste sempre suas regex com diferentes casos
- Use grupos para capturar partes específicas
- Seja específico - evite padrões muito genéricos
- Documente regex complexas com comentários
⚠️ Cuidados
- Performance - regex complexas podem ser lentas
- Escape caracteres especiais quando necessário
- Validação completa - regex não substitui validação de negócio
- Legibilidade - prefira clareza à brevidade extrema
Ferramentas Úteis
🎯 Próximos Passos
- Pratique com os exemplos no Regex101
- Experimente modificar os padrões
- Crie suas próprias regex para casos específicos
- Compartilhe suas descobertas com a comunidade
Esta página faz parte do projeto CODAQUI - uma iniciativa para democratizar o conhecimento em tecnologia.