我在电子邮件验证方面遇到问题我有两种基于电子邮件格式的电子邮件格式我只需要检查验证如果错误用户输入这两封电子邮件,请在我的代码下面提示警报消息不能正常工作我怎么能这样做
var atpos = email.indexOf("@ho.XXX");
var atpos1 = email.indexOf("@YYYY");
var dotpos = email.lastIndexOf(".com");
if (atpos<1 && atpos1<1 || dotpos<atpos+2 ||dotpos<atpos1+2 || dotpos+2>=email.length){
alert("Email Should be in @@ho.XXX.com or @YYYY.com");
document.getElementById("txtEmail").focus();
return false;
}
当我采用上述if-condition
时,它同时接受电子邮件ID。我需要一次只接受一个。如果用户同时输入两个显示错误消息,例如只输入一个电子邮件ID,当我在.com
.comyu
之后输入一些文字时,它会接受而不会显示任何错误如何验证.com
显示这种情况下的错误
答案 0 :(得分:1)
如果您只是需要检查您的电子邮件是否以'@ ho.XXX.com'或'@YYYY.com'结尾,并且这些是您希望查找的固定域名,那么您可以简单地从下面开始:< / p>
function checkval(v) {
if (!v.endsWith("@ho.XXX.com") && !v.endsWith("@YYYY.com"))
alert("value is bad : " + v);
else
alert("value is good : " + v);
};
checkval("test@ho.XXX.com");
checkval("sasdf@YYYY.com");
checkval("xxxx@ho.XX.com");
checkval("sasdf@YYY.com");
--- Snippet编辑使用endsWith。文档here
endsWith()方法确定字符串是否以指定字符串的字符结尾,并根据需要返回true或false。
提示:您可以通过各种方式尝试使用正则表达式,并使您的代码更具可伸缩性,但这取决于您的用例。
---用DeMorgan定律编辑---
不是(a或b)=(不是a)和(不是b)
!(a || b ) = !a && !b
答案 1 :(得分:0)
您应该使用正则表达式。实施例
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);
}
然后您可以根据需要修改模式。
我更新了函数validateEmail作为您的要求(只是电子邮件地址(@ ho.XXX.com或@YYYY.com)。所以您可以尝试修改。
function validateEmail(email) {
var re = /^[a-z0-9._%+-]+@(ho.XXX.com|YYYY.com)$/;
return re.test(email);
}