拥有在PHP中验证的电子邮件地址与的preg_match问题

问题描述:

下面的代码:拥有在PHP中验证的电子邮件地址与的preg_match问题

if(trim($_POST['email']) == '') { 
     $hasError = true; 
    } else if (!preg_match("/^[A-Z0-9._%-][email protected][A-Z0-9._%-]+\.[A-Z]{2,4}$", trim($_POST['email']))) { 
     $hasError = true; 
    } else { 
     $email = trim($_POST['email']); 
    } 

这里的错误信息:

警告:的preg_match()[function.preg匹配]:没有结束符“在/home/bigsilkd/public_html/UBA/join.php /”里找到的第22行

+1

问题是你没有使用正确的正则表达式来验证电子邮件地址。正确的可以在这里找到:http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html – Domenic 2011-04-03 18:22:04

+1

'filter_var($ _ POST ['email'],FILTER_VALIDATE_EMAIL);'是要复杂吗? – Wrikken 2011-04-03 18:23:58

这也正是它说:

preg_match("/^[A-Z0-9._%-][email protected][A-Z0-9._%-]+\.[A-Z]{2,4}$" 

应该是

preg_match("/^[A-Z0-9._%-][email protected][A-Z0-9._%-]+\.[A-Z]{2,4}$/" 
                ^
                 | 
            This was missing ---/ 

您不应该使用正则表达式来验证电子邮件。例如,你的正则表达式不允许我的电子邮件地址[email protected],这是一个正常和有效的电子邮件。保存我的邮件!由于表单验证不正确,它正在消失!使用filter_var

if (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) { 
    // email is valid 
}