Expressões regulares são uma funcionalidade incrível… É possível interagir com strings e verificar a sua sintaxe…
Normalmente se usa regexp (Regular Expression) pra algumas tarefas simples mas muito úteis: como validar um e-mail, validar uma url, validar a formatação de uma senha que precise ter no minimo 2 letras, 6 números e 7 caracteres… Isso tudo pode e deve ser validado com expressões regulares.
Antes de mostrar o código da validação de e-mail, vou fazer uma breve introdução aos possíveis “formatos” de uma regexp… Nem todas serão usadas, mas é bom que vocês já vejam tudo que é possível fazer:
- \s -> Significa um espaço em branco
- ^ -> Significa o início da string
- $ -> Significa o fim da string
- . -> Significa qualquer caractere
- (bola|casa) -> Significa bola ou casa
- [0-9] ->Significa qualquer número entre zero e nove
- [a-z] -> Significa qualquer letra minúscula
- [A-Z] -> Significa qualquer letra maiúscula
- [^a-z] -> Significa a não ocorrência (falta / proibição) de letras minúsculas. O circunflexo (^) tem significado de ‘não existe’
- ? -> Significa nenhuma ou uma ocorrência caractere anterior
- * -> Significa nenhuma ou várias ocorrências do caractere anterior
- + -> Significa – no mínimo – uma ocorrência do caractere anterior
- {3} -> Significa exatamente três caracteres
- {3,} -> Significa três ou mais caracteres
- {3,6} -> Significa entre três e seis caracteres, pode ser 4, 5 também
Mas calma… Onde isso tudo vai?
Vamos a um exemplo simpes… Uma regexp pra verificar um nome de usuario que precise ter no mínimo 5 caracteres e possa ser composto apenas por letras minusculas e números: ^[a-z0-9]{5,}$
Sacaram? O nome desse ‘bloco’ da regexp é chamado pattern, ou padrão. Ao validar uma string você compara um pattern com uma string, e se ela validar, ou seja, cumprir as condições, a string está dentro do formato.
Agora vamos ao código de validação de e-mail, ele é bem simples:
// Define uma função que poderá ser usada para validar e-mails usando regexp
function validaEmail($email) {
$conta = "^[a-zA-Z0-9\._-]+@";
$domino = "[a-zA-Z0-9\._-]+.";
$extensao = "([a-zA-Z]{2,4})$";
$pattern = $conta.$domino.$extensao;
if (ereg($pattern, $email))
return true;
else
return false;
}
// Define uma variável para testar o validador
$input = "meuemail@dominio.com.br";
// Faz a verificação usando a função
if (validaEmail($input)) {
echo "O e-mail inserido é valido!";
} else {
echo "O e-mail inserido é invalido!";
}Agora vamos explicar o script… Dividi a pattern em três partes pra ficar mais fácil de entender, usaremos o e-mail contato@thiagobelem.net como exemplo:
^[a-zA-Z0-9\._-]+@
Essa parte é responsável por validar o que vem antes da @.. A conta do e-mail (seria o contato@ do e-mail). Podemos ver que – após o início da string – ela precisa ter pelo menos um caractere e pode ser composta por letras minúsculas, letras maiúsculas, números, ponto, sublinhado (underscore) e hífen. Depois desses caracteres, vem o @.
[a-zA-Z0-9\._-]+.
Essa parte é responsável pela sintaxe do domínio (seria o thiagobelem. do e-mail)… Ele deve ser composto por um ou mais letras minúsculas, letras maiúsculas, números, pontos, underscores e hífens. E logo após o domínio, vem um ponto. Repare que o ponto está escapado, ou seja: tem uma barra antes dele. Isso acontece pro que o . faz parte dos ‘formatos’ usados numa regexp e significa “qualquer caractere”. Se no e-mail tivesse ‘.com.br’, o .com faria parte desse bloco e não do próximo.
([a-zA-Z]{2,4})$
Essa é a ultima parte, responsável pela sintaxe do tld (extensão do domínio, que seria o net do e-mail)… Ele deve ter de dois a quatro caracteres, sendo eles letras minúsculas e/ou letras maiúsculas. Ele também é a última coisa do e-mail, então logo após ele vem o fim da string, o fim do e-mail.
Com tudo isso o nosso e-mail está validado e você tem um validado de e-mails pronto pra ser usado!
E aí? Gostaram? Comentem! ![]()
Você também vai gostar de ler:
- Removendo acentos de uma string – URLs amigáveis
- Validação de formulários com jQuery
- Aprendendo URLs amigáveis com regras complexas
- Principais falhas de segurança no PHP
- Função para validação de datas no PHP
Com as tags Código, Domínio, E-mail, Funcionalidade, PHP, RegExp, Scripts, Senha, Strings, URL, Validação
Escrito por Thiago Belem
Gostou desse artigo?
Não se esqueça de assinar o RSS e divulgue-o para o mundo: