使用jQuery进行电子邮件地址验证

3

我正在进行一项电子邮件注册表单的培训练习,我想用jquery检查地址是否正确。

到目前为止,我已经能够编写以下代码:

var validateEmail = function(email){
  if(email.includes(' ')){return false};
  if(!email.includes('@')){return false};
  return true;
}

这段代码本来很完美,但是不幸的是,在地址的最后一部分没有".com" ".fr"等时,表单被验证了。由于我刚开始学习开发,如果有人能给我一些提示,我会非常感激。
在此先行致谢!

https://stackoverflow.com/a/44990869/1920003 - Lynob
只是检查@是你能做的最好的事情。你可以拥有一个有效的电子邮件地址,而没有tld(例如localhost),并且您可以在IP地址上拥有一个有效的地址。接受的答案例如不接受所有可能的TLD。甚至不考虑新的TLD,甚至一些旧的TLD,如.museum。无论如何,您都无法真正阻止任何人编写虚假地址。 - René
更多信息请参见 https://dev59.com/3HVD5IYBdhLWcg3wOo9h(全部阅读 :-)) - René
4个回答

9

您可以使用普通的JavaScript

function isEmail(email) {
    var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    return regex.test(email);
}

1
Mohsen,你应该将“var regex”更改为“ /^([a-zA-Z0-9_.+-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,6})+$ /”,以支持像.museum等较新的顶级域名。 - Naveen Web Solutions

6

emailValidate()函数将接受一个参数sEmail,并使用正则表达式验证电子邮件地址。可以参考以下代码:

function emailValidate(sEmail) {
    var filter = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
    if (filter.test(sEmail)) {
        return true;
    }
    else {
        return false;
    }
}​

现在,您只需要通过按钮点击事件等来调用此函数。

2

您的验证对于检查电子邮件有点过于简单化。当然,如果没有最后一部分,它也可以工作,因为您只检查了一个@符号。

相反,您可以使用更通用的正则表达式进行检查:

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,}))$/;
var isAnEmail = re.test(email.toLowerCase());

2
您可以轻松地使用正则表达式来实现。
var validateEmail = function(email){

var regexForEmailValidation = /^\w+([-+.'][^\s]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;

var emailFormat = regexForEmailValidation.test($(email).val());// this returns result in boolean type

// do whatever you wish to do here
  }

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