首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正在验证电子邮件地址-停止双点

正在验证电子邮件地址-停止双点
EN

Stack Overflow用户
提问于 2011-11-16 10:35:59
回答 1查看 2.3K关注 0票数 1

我目前正在SwiftMailer上发送电子邮件。我有一个单独的电子邮件验证脚本,检查电子邮件,以确保它们是有效的,然后使用SwiftMailer发送。它工作得很好。

但是,我的验证器不会拾取意外的双点(..)在电子邮件地址中,例如:

ben..sinclair@email.com或ben.sinclair@email..com

这是我的代码。如果他们在电子邮件地址中的任何位置放了两个点,我需要添加什么才能给出错误?

代码语言:javascript
复制
function valid_email($email) {
    if (preg_match("/[_a-z0-9-]+(\.[_a-z0-9-]+)*@([_0-9a-z][_0-9a-z-]*[_0-9a-z]\.)+[0-9a-z][a-z]+/", $email, $matches))
        return true;
    return false;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-16 11:48:11

filter_var建议的答案: FILTER_VALIDATE_EMAIL验证时没有tld,它并不完美,例如,它认为name@example是有效的电子邮件地址,而它不是。

代码语言:javascript
复制
function checkEmailAddress( $email = "" ) {
    $email = trim($email);
    $email = str_replace( " ", "", $email );
    if( filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE )
        return FALSE;
    if ( substr_count( $email, '@' ) > 1 )//more than one '@'?
        return FALSE;
    if ( preg_match( "#[\;\#\n\r\*\'\"<>&\%\!\(\)\{\}\[\]\?\\/\s]#", $email ) )
        return FALSE;
    else if ( preg_match( "/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,4})(\]?)$/", $email) )
        return TRUE;
    else
        return FALSE;
}

希望它能有所帮助:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8145969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档