Regex 用于电子邮件列表的正则表达式,验证无效电子邮件地址

Regex 用于电子邮件列表的正则表达式,验证无效电子邮件地址,regex,validation,Regex,Validation,我有下面的正则表达式用于验证电子邮件地址列表,其中以“;”分隔 \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*([;]\s*\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)* 在我发现问题之前,它一直正常工作(用于我的测试) 它不仅允许这样的东西(有意的) Email@domain.com;Email@domain.com;Email@domain.com 它允许这样的东西:(不是故意的) Email@domain

我有下面的正则表达式用于验证电子邮件地址列表,其中以“;”分隔

\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*([;]\s*\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*
在我发现问题之前,它一直正常工作(用于我的测试)

它不仅允许这样的东西(有意的) Email@domain.com;Email@domain.com;Email@domain.com

它允许这样的东西:(不是故意的) Email@domain.comEmail@域名。comEmail@domain.com

问题出在哪里?

试试这个:

(?:(?:^|;)\w+(?:[-+.]\w+)*@\w+(?:[-.]\w+)*\.\w+(?:[-.]\w+)*)+$

这是使用正则表达式检查电子邮件的标准方法:
\b\w+@[\w.]+\.[A-z.]{2,4}\b

它并不完美,但应该适用于您的示例。

你也可以用分号分割字符串,然后逐个验证电子邮件。

一次验证一封电子邮件可能是你最干净的赌注,否则正则表达式可能会变得非常难看。尤其是当您以后向地址添加更复杂的需求时。同时使用单个地址的一大好处是,您遇到了一个久经考验的问题,即。

为什么不使用分号分隔电子邮件列表,并对列表中的每个元素进行验证?这样您只允许使用一个
@
。好主意,我会试试。