只是想知道为什么这么严格,我可以发送非常简单的电子邮件说tim@yahoo.com或者@@google.com
但如果我再发邮件(sacagawea@gmail.com),则不会发送。
相反,它回复了我的错误消息:提供的电子邮件地址无效
// Create a function to check email
function checkEmail($email)
{
// Add some regex
return preg_match('/^\S+@[\w\d.-]{2,}\.[\w]{2,6}$/iU', $email) ? TRUE : FALSE;
}
答案 0 :(得分:3)
如果您可以访问php 5.2或更高版本,则应使用filter函数:
function checkEmail($email){
return filter_var($email, FILTER_VALIDATE_EMAIL) !== false;
}
或验证它,“the right way”。
答案 1 :(得分:2)
这部分
@[\w\d.-]{2,}
正在吞噬
@gmail.com
不为此部分留下任何内容
[\w\d.-]{2,}
匹配。
最好重复使用已经过验证的内容,例如参见http://www.regular-expressions.info/email.html
答案 2 :(得分:1)
我通常不会为检查电子邮件的有效性而烦恼。我只需要检查“@”前面和后面是否有值。就这样。剩下的“检查”工作,MTA将为我做这件事。如果它的电子邮件无效,我将收到MTA的回复。如果能够发送出去,这意味着该电子邮件很可能是有效的。
答案 3 :(得分:0)
请尝试
'/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$/'
它也适用于子域名电子邮件地址email@sub.domain.tl