Aula 12 – Validação de Dados Reais ✅
Nesta aula, vamos colocar em prática tudo o que aprendemos para construir validadores de dados comuns no dia a dia do desenvolvimento.
📧 Validação de E-mail
Validar e-mail com Regex é um dos temas mais debatidos, pois existem formatos muito complexos. Vamos focar em uma versão robusta e prática:
- Padrão:
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ - Explicação:
^...$: Garante que o texto inteiro é o e-mail.[a-zA-Z0-9._%+-]+: Usuário (letras, números e alguns símbolos).@: O símbolo obrigatório.[a-zA-Z0-9.-]+: Domínio.\.[a-zA-Z]{2,}: Extensão (ex: .com, .org, .com.br).
🆔 Validação de CPF (Formato)
Lembrando que o Regex valida apenas o formato (máscara), não a lógica do dígito verificador.
- Formato:
000.000.000-00 - Padrão:
^\d{3}\.\d{3}\.\d{3}-\d{2}$ - Com pontos opcionais:
^\d{3}\.?\d{3}\.?\d{3}-?\d{2}$
📱 Validação de Telefone (Brasil)
- Formato:
(11) 99999-8888 - Padrão:
^\(\d{2}\)\s\d{4,5}-\d{4}$
📊 Tabela de Padrões Reais
| Dado | Regex Sugerido |
|---|---|
| Data (DD/MM/AAAA) | ^\d{2}/\d{2}/\d{4}$ |
| CEP | ^\d{5}-\d{3}$ |
| Hora (24h) | ^([01]\d|2[0-3]):[0-5]\d$ |
💻 Exemplo em TermynalJS (Validação Única)
$ # Validando um CPF via terminal
$ echo "123.456.789-00" | grep -P "^\d{3}\.\d{3}\.\d{3}-\d{2}$"
$ 123.456.789-00
$
$ # Testando um CPF inválido
$ echo "123-456" | grep -P "^\d{3}\.\d{3}\.\d{3}-\d{2}$"
$ # (Nenhum resultado retornado)
📝 Exercícios de Fixação
- Básico: Crie um Regex para validar um CEP no formato
00000-000. - Básico: Melhore o validador de CPF para aceitar tanto números com pontos quanto apenas números (
12345678900). - Intermediário: Crie um validador de URL simples que comece com
https://e termine com.com. - Intermediário: Valide um horário no formato
HH:MM. - Desafio: No Regex101, crie um padrão para "Senhas Fortes" que exija: Mínimo 8 caracteres, pelo menos uma letra e pelo menos um número. (Use o que aprendeu, não precisa ser uma única expressão se for difícil demais agora!).
🚀 Mini-Projeto: Validador de Senhas
Objetivo: Verificar se uma senha atende aos requisitos mínimos de segurança.
- Regra: A senha deve ter entre 8 e 20 caracteres e conter ao menos um caractere especial (
!@#$%*). - Regex sugerido:
^[\w!@#$%*]{8,20}$(Note: este aceita, mas não obriga o especial, para obrigar precisaríamos de lookaheads, que é avançado. Por enquanto, valide se ela contém apenas os permitidos e o tamanho). - Teste com:
senha123(✅),123(❌),senha_muito_longa_que_passa_do_limite(❌).