javascript,电子邮件验证器脚本

时间:2012-10-15 19:19:07

标签: javascript email validation

我正在尝试使用以下javascript来验证正确的电子邮件地址,但我在此脚本中收到错误消息。谁能明白为什么?提前谢谢。

function isEmail(str){
    var reg = new RegExp("?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\]");
    return reg.test(str);
}

3 个答案:

答案 0 :(得分:0)

你有一个未转义的字符串字符。只要您使用"打开字符串,只要您希望"位于字符串中,就需要使用反斜杠\"对其进行转义。

function isEmail(str){
    var reg = new RegExp("?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\]");
    return reg.test(str);
}

答案 1 :(得分:0)

错误的是你有一个未转义的双引号

var reg = new RegExp("?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\" ....
-----------------------------------------------------------------------------------------^

注意:只需查看问题的颜色编码,您就会看到它。也许您的IDE也有颜色编码。

答案 2 :(得分:0)

电子邮件验证很容易出错。因此,我建议您使用Verimail.js

为什么?

  • 语法验证(根据RFC 822)
  • IANA TLD验证
  • 针对最常见的TLD和电子邮件域的拼写建议
  • 拒绝临时电子邮件帐户域名,例如mailinator.com

很容易!在您的网站上下载并添加脚本:

https://raw.github.com/comfirm/Verimail.js/master/src/verimail.js

然后使用:

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

Verimail.js甚至有一个非常容易使用的jQuery plugin

$("input#email-address").verimail({
    messageElement: "p#status-message"
});
相关问题