PHP正则验证Email的方法
author:一佰互联 2019-04-28   click:181

本文实例讲述了PHP正则验证Email的方法。分享给大家供大家参考。具体如下:

<?phpfunction validateEmail($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)  {   // local part length exceeded   $isValid = false;  }  else if ($domainLen < 1 || $domainLen > 255)  {   // domain part length exceeded   $isValid = false;  }  else if ($local[0] == "." || $local[$localLen-1] == ".")  {   // local part starts or ends with "."   $isValid = false;  }  else if (preg_match("/\.\./", $local))  {   // local part has two consecutive dots   $isValid = false;  }  else if (!preg_match("/^[A-Za-z0-9\-\.]+$/", $domain))  {   // character not valid in domain part   $isValid = false;  }  else if (preg_match("/\.\./", $domain))  {   // domain part has two consecutive dots   $isValid = false;  }  else if(!preg_match("/^(\\.|[A-Za-z0-9!#%&`_=\/$"*+?^{}|~.-])+$/", str_replace("\\","",$local)))  {   // character not valid in local part unless    // local part is quoted   if (!preg_match("/^"(\\"|[^"])+"$/", str_replace("\\","",$local)))   {   $isValid = false;   }  }  if ($isValid && !(checkdnsrr($domain,"MX") || checkdnsrr($domain,"A")))  {   // domain not found in DNS   $isValid = false;  } } return $isValid;}?>

PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:

JavaScript正则表达式在线测试工具:http://tools.jb51.net/regex/javascript

正则表达式在线生成工具:http://tools.jb51.net/regex/create_reg

希望本文所述对大家的php程序设计有所帮助。