PHP正则验证Email的方法
本文实例讲述了PHP正则验证Email的方法。分享给大家供大家参考。具体如下:
<?php
functionvalidateEmail($email)
{
$isValid=true;
$atIndex=strrpos($email,"@");
if(is_bool($atIndex)&&!$atIndex)
{
$isValid=false;
}
else
{
$domain=substr($email,$atIndex+1);
$local=substr($email,0,$atIndex);
$localLen=strlen($local);
$domainLen=strlen($domain);
if($localLen<1||$localLen>64)
{
//localpartlengthexceeded
$isValid=false;
}
elseif($domainLen<1||$domainLen>255)
{
//domainpartlengthexceeded
$isValid=false;
}
elseif($local[0]=='.'||$local[$localLen-1]=='.')
{
//localpartstartsorendswith'.'
$isValid=false;
}
elseif(preg_match('/\\.\\./',$local))
{
//localparthastwoconsecutivedots
$isValid=false;
}
elseif(!preg_match('/^[A-Za-z0-9\\-\\.]+$/',$domain))
{
//characternotvalidindomainpart
$isValid=false;
}
elseif(preg_match('/\\.\\./',$domain))
{
//domainparthastwoconsecutivedots
$isValid=false;
}
elseif(!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/',str_replace("\\\\","",$local)))
{
//characternotvalidinlocalpartunless
//localpartisquoted
if(!preg_match('/^"(\\\\"|[^"])+"$/',str_replace("\\\\","",$local)))
{
$isValid=false;
}
}
if($isValid&&!(checkdnsrr($domain,"MX")||checkdnsrr($domain,"A")))
{
//domainnotfoundinDNS
$isValid=false;
}
}
return$isValid;
}
?>
PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:
JavaScript正则表达式在线测试工具:
http://tools.jb51.net/regex/javascript
正则表达式在线生成工具:
http://tools.jb51.net/regex/create_reg
希望本文所述对大家的php程序设计有所帮助。