使用javascript验证多个电子邮件逗号分隔

前端之家收集整理的这篇文章主要介绍了使用javascript验证多个电子邮件逗号分隔前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想验证一个字符串,该字符串可以是电子邮件或用逗号分隔的多个电子邮件.

例如:

bill.gates@hotmail.com – >真正
账单 – >假
bill.gates @ microsoft.com,steve.jobs @ apple.com“ – > TRUE
bill.gates @ microsoft.com,steve.jobs @ apple.com,bob“ – > false
bob,bill.gates @ microsoft.com,steve.jobs @ apple.com“ – > false

我推出了下一个与测试用例一起使用的代码.

function validateEmail(field) {
    var regex=/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i;
    return (regex.test(field)) ? true : false;
}

function validateMultipleEmailsCommaSeparated(value) {
    var result = value.split(",");
    for(var i = 0;i < result.length;i++)
    if(!validateEmail(result[i])) 
            return false;           
    return true;
}

这是最快捷的方式吗?如果我想允许怎么办并且,作为分隔符?

解决方法

您不应将顶级域名与[A-Z] {2,4}匹配:

那么.museum或.travel呢? IDNA域名如.xn – 0zwm56d或.xn – 11b5bs3a9aj6g怎么样?

此外,拥有像“John Doe”@ example.org这样的电子邮件地址是完全有效的.

在我看来,你应该检查客户端是否地址包含@,如果至少有一个.在它之后.在服务器端,您可以检查服务器是否存在(您甚至可能想尝试连接到相应的SMTP端口)或只发送验证邮件.

其他一切都容易出错,因为实际的正则表达式检查有效的电子邮件地址looks like this.

还有,这个

return (regex.test(field)) ? true : false;

是一个严重的WTF – test()已经返回一个布尔值!

如果要允许不同的分隔符,请使用正则表达式而不是字符串进行拆分,例如

value.split(/,|;/)

猜你在找的JavaScript相关文章