电子邮件验证不起作用

时间:2012-07-11 12:20:58

标签: javascript jquery

您好我正在尝试使用正则表达式验证电子邮件。这是我的代码:

       <input type="text" name="email" id="email"/>

       var email = $("input#email"),
       re =  /^[A-Za-z0-9][a-zA-Z0-9._-][A-Za-z0-9]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/; 

       if(re.test(email.val())){
           alert("email valid");
       }else{
           alert("email not valid");
       } 

无论我在文本字段中输入什么,它都说电子邮件无效。问题是什么?

4 个答案:

答案 0 :(得分:2)

试试工作演示 = http://jsfiddle.net/buezz/

希望这有助于您的事业:)随意玩耍。

良好的链接:http://jquerybyexample.blogspot.com/2011/04/validate-email-address-using-jquery.html

<强>码

function validateEmail(sEmail) {
    var filter = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
    if (filter.test(sEmail)) {
        return true;
    }
    else {
        return false;
    }
}

$(document).ready(function() {
   $('#btnValidate').click(function() {
        var sEmail = $('#txtEmail').val();
        if ($.trim(sEmail).length == 0) {
            alert('Please enter valid email address');
            e.preventDefault();
        }
        if (validateEmail(sEmail)) {
            alert('Email is valid');
        }
        else {
            alert('Invalid Email Address');
            e.preventDefault();
        }
    });
});
​

答案 1 :(得分:2)

我刚刚回答了类似的问题:https://stackoverflow.com/a/12674524/340736

我对你的建议是,不要试图让你自己。你可能做错了。尝试遵循标准,例如RFC 822.自己做起来并不容易,但有些库可以做到这一点。

一个例子是Verimail.js。它遵循RFC 822,但也根据IANA注册的TLD完整列表进行TLD验证。

使用起来也很简单:

var email = "cool@fabeook.cmo";
var verimail = new Comfirm.AlphaMail.Verimail();

verimail.verify(email, function(status, message, suggestion){
    if(status < 0){
        // Incorrect syntax!
    }else{
        // Syntax looks great!
    }
});

上面的示例将出现“语法错误!”一行因为TLD'cmo'无效。除此之外,它还会提示您可以返回给您的用户,在这种情况下,建议变量将包含'cool@facebook.com',因为'fabeook.cmo'看起来很像'facebook.com'。< / p>

希望这有帮助!

答案 2 :(得分:1)

我用

function is_email(a){return /^([\w!.%+\-])+@([\w\-])+(?:\.[\w\-]+)+$/.test(a);}

我的电子邮件验证;我记得它刚才是facebook的注册页面。

你只需要这样做:

if (!is_email($('#email').val()) {
   alert('invalid email and all that');
}

答案 3 :(得分:1)

你正在使用一个非常奇怪的正则表达式。

看看这个:

[A-Za-z0-9][a-zA-Z0-9._-][A-Za-z0-9]

这将匹配1个字母数字字母,然后是字母数字字母或./_/-,然后是1个或多个字母数字字母。

试试www.regular-expressions.info中的这个正则表达式,我编辑了一下。

/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9]{2,4}$/