当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《使用javascript验证多个电子邮件逗号分隔》经验,为你挑选了1个好方法。

我想验证一个字符串,它可以是一封电子邮件或多个用逗号分隔的电子邮件.

例如:

bill.gates@hotmail.com - > TRUE
bill - > FALSE
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;
}

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



1> Christoph..:

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

怎么样.museum还是.travel?什么IDNA域像.xn--0zwm56d.xn--11b5bs3a9aj6g

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

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

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


还有,这个

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

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


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

value.split(/,|;/)


@Kristen:'@'在引用的字符串中是允许的,但只在那里; 我从未见过使用引用的字符串,尽管它们可能提供一种简单的方法来混淆垃圾邮件机器人; 一个人还应该记住,即使没有引用,下面的字符也是有效的:!#$%&'*+ - /=?^ _`{|}〜
推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有