欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP正则验证Email的方法

程序员文章站 2022-07-08 08:13:20
本文实例讲述了php正则验证email的方法。分享给大家供大家参考。具体如下:

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

<?php
function 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正则表达式在线测试工具:

正则表达式在线生成工具:

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