0

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

       <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

4 回答 4

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();
        }
    });
});
​
于 2012-07-11T12:27:29.083 回答
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”。

希望这可以帮助!

于 2012-10-01T14:09:22.640 回答
1

我用

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

用于我的电子邮件验证;我记得它是从 facebook 的注册页面不久前。

你只需要这样做:

if (!is_email($('#email').val()) {
   alert('invalid email and all that');
}
于 2012-07-11T12:25:05.137 回答
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}$/
于 2012-07-11T12:26:09.713 回答