电子邮件验证在javascript中不起作用

电子邮件验证在javascript中不起作用,javascript,Javascript,当我在文本框example@gmail.com中只提供域名而不提供名称时,我的电子邮件验证未正确检查条件。它显示了与有效电子邮件相同的有效电子邮件,我需要对此情况发出警报。但它在检查域名时工作正常 我的代码: if(!(email.endsWith("@yahoo.com") || email.endsWith("@gmail.com"))){ alert("Email Should be in @yahoo.com or @gmail.com");

当我在文本框example@gmail.com中只提供域名而不提供名称时,我的电子邮件验证未正确检查条件。它显示了与有效电子邮件相同的有效电子邮件,我需要对此情况发出警报。但它在检查域名时工作正常

我的代码:

if(!(email.endsWith("@yahoo.com")  || email.endsWith("@gmail.com"))){
          alert("Email Should be in @yahoo.com or @gmail.com");
           $("#txtEmail").val('');
           document.getElementById("txtEmail").focus();
             return false; 
    } 
谢谢

将email.lastIndexOf@==0添加到您的状态,如下所示:

if(email.lastIndexOf("@") === 0 || !(email.endsWith("@yahoo.com") || email.endsWith("@gmail.com"))){

尝试使用这种regexp

if (email.match(/^\S+@(yahoo|gmail)+\.com$/g))

这将检查您在@之前是否有内容,并验证它是yahoo还是gmail。

如果您不考虑regex,则始终可以添加另一个startsWith检查,这是一个非常好的解决方案。使用regex验证电子邮件,根据您发布的内容,JS正在做它应该做的事情。我建议使用正则表达式来检查输入的值是否是有效的邮件地址,如果是这种情况,您可以检查yahoo/gmail。顺便说一句:甚至不要尝试写一封电子邮件regex,省去你自己的麻烦,用谷歌搜索一封好的邮件。如果我错了,可能会重复“纠正我”,但我认为regex不是一个好的解决方案,因为他想检查电子邮件是来自yahoo.com还是gmail.com。