检查是否输入了正确的电子邮件

时间:2011-12-06 10:31:07

标签: javascript jquery validation

我有一个字段供用户写入他们的电子邮件地址。这是可选的,所以我需要先检查是否在该字段中输入了某些内容,如果没有输入则什么都不做,但如果输入的内容比检查是否是电子邮件。

现在我就在这时

var email = $("input#sc_email").val();  
if (email == "") {                
    // If e-mail field is empty do nothing
} else {                          
     // If something was entered
    // [CODE HERE] Check if valid e-mail was entered, if not show error message
    $("label#email_error").show(); //error message
    $("input#sc_email").focus();   //focus on email field
    return false;  
} 

我甚至不确定这是否正确,但我认为确实如此。现在我需要帮助解决代码中的漏洞,我将它们标记为[CODE HERE]。任何人都可以提出解决方案。

3 个答案:

答案 0 :(得分:18)

您可以使用jQuery validate plugin,但如果您只想在一个字段中检查电子邮件地址的有效性,那就有点过分了。

相反,如果输入了值,下面函数中的正则表达式将确保电子邮件地址的格式正确。

var email = $("input#sc_email").val();  

if (email !== "") {  // If something was entered
    if (!isValidEmailAddress(email)) {
        $("label#email_error").show(); //error message
        $("input#sc_email").focus();   //focus on email field
        return false;  
    }
} 

function isValidEmailAddress(emailAddress) {
    var pattern = new RegExp(/^(("[\w-+\s]+")|([\w-+]+(?:\.[\w-+]+)*)|("[\w-+\s]+")([\w-+]+(?:\.[\w-+]+)*))(@((?:[\w-+]+\.)*\w[\w-+]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][\d]\.|1[\d]{2}\.|[\d]{1,2}\.))((25[0-5]|2[0-4][\d]|1[\d]{2}|[\d]{1,2})\.){2}(25[0-5]|2[0-4][\d]|1[\d]{2}|[\d]{1,2})\]?$)/i);
    return pattern.test(emailAddress);
};

答案 1 :(得分:2)

您可以使用正则表达式来验证JavaScript中的电子邮件地址。

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);
}

但是,这只会验证它是有效的电子邮件地址格式化字符串。即使没有人真正拥有该电子邮件地址,flibble@flobble.com也会有效

查看this question

答案 2 :(得分:1)

我建议在客户端和服务器端进行验证,您只需使用以下代码:

alert(/\S+@\S+\.\S+/.test('asdasd@asdasd@asdd.com'));
alert(/\S+@\S+\.\S+/.test('asdasd234@asdd.com'));

但重要的是,使用服务器端验证和方法,如发送点击链接邮件,验证您的客户电子邮件地址或邮寄随机数等。