检查输入的电子邮件地址是否正确。

9

我有一个用来让用户填写邮箱地址的字段。这是可选项,所以我需要先检查是否有内容输入在该字段中,如果没有输入任何内容,则不做任何操作,但如果输入了内容,则需要检查其是否为电子邮件地址。

现在,我已经到达了这个步骤

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]标记了它们。请问有人能提供解决方案吗?


可能是在JavaScript中验证电子邮件地址?的重复问题。 - Flummox - don't be evil SE
3个回答

23
你可以使用jQuery验证插件来完成这项任务,但是如果你只想检查一个字段中电子邮件地址的有效性,那么这有点过于复杂了。
相反,下面的函数中的正则表达式将确保电子邮件地址的格式正确,如果已输入值。
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);
};

它使用正则表达式(http://en.wikipedia.org/wiki/Regular_expression)来检查字符串的格式。它返回一个布尔值,指示字符串是否与电子邮件地址的RFC标准格式(http://www.ietf.org/rfc/rfc5322.txt)匹配。 - Rory McCrossan
是的,我测试过了,完美地运行了,谢谢你)))只需要等待接受答案))) - Ilja

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 就算没有人真正拥有这个邮件地址,也是有效的

可以查看这个问题


1
我建议在客户端和服务器端都进行验证,你可以使用以下代码:

我建议在客户端和服务器端都进行验证,你可以简单地使用这段代码:

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接