我正在尝试使用以下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);
}
答案 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。
为什么?
很容易!在您的网站上下载并添加脚本:
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"
});