PHP, Validando e-mail com expressão regular

14 11 2007

Para fazer a validação simples em um endereço de e-mail utiliza a seguinte expressão regular(Os escapes duplos são para aspas duplas, use escapes únicos para aspas simples):

^([a-z0-9_]|\\-|\\.)+@(([az0-9_]|\\-)+\\.)+[a-z]{2,4}$

Para chamar esse código você deve usar o eregi(). O ereg() não funcionará porque a pesquisa precisa ser sem distinção entre maiúsculas e minúsculas. Então, utilize a função da seguinte maneira:


if(!eregi(“^([a-z0-9_]|\\-|\\.)+@(([az0-9_]|\\-)+\\.)+[a-z]{2,4}$”,”$email”)){
die(“E-mail invalido.”);
}

A expressao regular anterior eh uma expressao regular de verificação de e-mail padrão, compatível com PHP, mas não eh a maneira mais segura de verificar um endereço de e-mail, ou seja, ela somente verifica se o padrão esta correto. Por exemplo alguém@ninguem.abc seria validado pois esta no formato correto, mesmo que ele não exista efetivamente.

A verificação pelo PHP é interessante para se certificar que o e-mail esta no padrão correto antes de inserir no banco de dados, porem, para uma melhor interface com o usuário, faça também a verificação via JavaScript.

http://www.couto.zuntto.com


Ações

Informações

6 respostas

20 11 2007
MySQL, Usando Expressões Regulares (+Dicas) « nodesign

[...] Esse é bem simples, deve ser melhorado para consultas por e-mails válidos, você também pode pegar a lógica do post feito pelo Couto usado no PHP sobre isso, Clicando Aqui. [...]

3 12 2007
otemponaopara

Muito bom cara… você tem pra CPF e pra CNPJ?

————–
O Tempo Não Para
otemponaopara.wordpress.com

13 02 2008
Criação de sites

Muito bom, estou procurando artigos sobre regexp em javascript, para criticas sem submit do form.

“otemponaopara”> CPF e CNPJ tem o algoritmo para validar por calculo, no gogole vc acha.

26 09 2008
Roger

Me ajudou, ótimo para vaidações de primeiro escalão.

Só concerte uma coisa:

if(!eregi(“^([a-z0-9_]|\\-|\\.)+@(([az0-9_]|\\-)+\\.)+[a-z]{2,4}$”,”$email”)){
die(“E-mail invalido.”);
}

no bloco após o arroba incluir um hífem entre o az ficando então a-z, assim a validação aceitará tanto números quantos caracteres na parte de domínio do email, pois antes só estava aceitando números valeu.

15 10 2008
Mayron Cachina

Não sei o que aconteceu mais não consegui validar com essa expressão, segue a que eu usei:
eregi(“^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$”,$_POST['email'])

20 05 2009
Mario

Usei a validação do Mayron e funcionou perfeitamente. Abraço

Deixe um comentário