
Nessa segunda parte do mini-curso de expressões regulares, irei apresentar algumas expressões que podem ser usadas para validar emails. Entre as possibilidades existentes, podemos manipular uma regex para validar apenas emails de um determinado domínio, restringir caracteres antes e depois do arroba, ignorar letras maiúsculas e muito mais. Essa é uma grande vantagem de se usar expressões regulares: você pode moldar a expressão para atender exatamente a sua necessidade. E, uma vez que a expressão esteja criada, é muito fácil testá-la e validá-la, pois existem muitas ferramentas para isso, inclusive sites web 2.0, onde basta colocar a expressão e verificar o resultado. Como ja disse no artigo anterior, o nosso estudo se fixará apenas na expressão regular, ou seja, não vou abordar ferramentas de regex nem como você poderá incluir regex em seu site ou aplicativo win32, mas já adianto que existem muitas ferramentas de regex para você incorporá-la a sua plataforma de desenvolvimento, se por ventura ela não suportar. Caso tenha chegado a esse artigo sem ler a parte 1, recomendo que a leia: Mini-Curso de Expressões Regulares – Entenda como Funciona – Parte 1.
Existem várias formas de validar um email, inclusive com expressões regulares. Se você procurar no Google, vai encontrar diversas variações de regex para esse fim, cada uma com uma peculiaridade. As formas que apresentarei aqui não são as únicas e nem as melhores. O meu intuito, quando criei essas expressões, foi que elas fossem as mais simples e eficientes possíveis, para que não ficasse complicado demais desenvolver uma explicação didática.
Para começar, acesse o site gskinner e digite alguns endereços de email no local apropriado (abaixo do campo de digitação da regex). Não vou sugerir uma lista aqui para evitar ação de spammers.
Agora, vamos definir algumas regras para que um email seja válido (podem ter mais, essas são só para exemplo).
- deve ter pelo menos 3 letras antes do @;
- antes do @ pode conter o caracter ponto (.), hífem (-) ou sublinhado (_);
- tem que conter o caracter arroba(@);
- tem que ter pelo menos 2 letras antes do ponto e depois do arroba;
- tem que terminar com o tipo de domínio (com, net, info, org…);
- pode, eventualmente, terminar com 2 caracteres, que seriam a sigla do país (br, uk…).
De posse dessas regras, vamos definir uma expressão regular que case uma string que atenta a esses seis requisitos básicos.
Regras 1, 2 e 3

Regra 4

Regra 5

Regra 6

Conseguiu acompanhar o passo-a-passo? Realmente não é muito complicado,mas para isso você tem que praticar e experimentar, por isso não disponibilizei a expressão para você copiar no início. A ídeia é que você digite os caracteres da expressão e com isso vá se familiarizando com elas. Veja abaixo como ficou a nossa expressão completa:
[a-z-\._0-9]{3,}@[a-z]{2,}\.(com|net|info)(\.[a-z]{2})?
Algumas observações: Dentro de uma lista (marcadores []), o metacaracter ponto (.) não é mais um metacaracter, portando o uso da barra para forçar o caracter literal não é obrigatório. Ainda dentro de uma lista, alguns livros recomendam usar o hífem (-) no final ”[a-z0-9._-]“.
Agora tente modificar os critérios. Melhore-a, ache bugs, corrija-a. Se estiver achando muito fácil, tente construir uma expressão para validar um número de CEP, um CPF ou um número de telefone. No próximo artigo iremos trabalhar com tags HTML. Espero que aproveitem.
Últimos comentários