gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 04:30:38 26 4
gpt4 key购买 nike

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

例如:

bill.gates@hotmail.com -> 正确
账单 -> 假
bill.gates@microsoft.com,steve.jobs@apple.com"-> 正确
bill.gates@microsoft.com,steve.jobs@apple.com, bob"-> false
鲍勃,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 呢? .xn--0zwm56d.xn--11b5bs3a9aj6g 这样的 IDNA 域呢?

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

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

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


还有这个

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

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


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

value.split(/,|;/)

关于javascript - 验证多个用 javascript 逗号分隔的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/566396/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com