javascript电子邮件regexp问题

时间:2014-01-27 08:12:53

标签: javascript regex

我想在电子邮件中允许_

但正则表达式我只是过滤了这个。

HTML,

<input id="external_email_input" maxlength="85" type="text">
    <button id='email'>Send</button>

JS,

 $("#email").click(function(){
        var email = $("#external_email_input").val();
        if(!validateEmail(email)){
            alert("wrong format!!");
        }else{
            alert("correct!!");
        }
    });    




function validateEmail(email) {
    var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return re.test(email);
}

的jsfiddle,

http://jsfiddle.net/rRnwb/1/

如果我把test@test_test.com

返回false

我如何在这里允许_作为条件?

3 个答案:

答案 0 :(得分:3)

使用<input type="email" />。删除所有JavaScript。问题解决了。

答案 1 :(得分:0)

根据Jerry在评论中的建议修改验证以包括下划线(_)可以解决问题。

验证功能:

function validateEmail(email) {
    var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"_]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9_]+\.)+[a-zA-Z]{2,}))$/;
    return re.test(email);
}

更新了小提琴:http://jsfiddle.net/rRnwb/2/

答案 2 :(得分:0)

您的代码是:

enter image description here

_符号后,没有@来满足您的输入邮件ID。

所以,你可以使用:

(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|((\w+\.)+[a-zA-Z]{2,}))

<强> FIDDLE DEMO

说明: enter image description here