首页 > 编程 > PHP > 正文

PHP正则验证Email的方法

2019-11-21 22:58:24
字体:
来源:转载
供稿:网友

本文实例讲述了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.VeVB.COm/regex/javascript

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

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表