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程序设计有所帮助。