2

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

\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@domain.comEmail@domain.com

它的问题在哪里?

4

3 回答 3

1

这是使用正则表达式检查电子邮件的标准方法:\b\w+@[\w.]+\.[A-z.]{2,4}\b
它并不完美,但它应该适用于您的示例。
您也可以用分号分割字符串,然后逐一验证电子邮件。

于 2013-04-14T13:06:46.820 回答
1

一次验证一封电子邮件可能是您最干净的选择,否则正则表达式会变得非常丑陋。特别是如果您稍后向地址添加更复杂的要求。当时使用单个地址的一大好处是您遇到了一个经过充分尝试的问题,即如何使用 regex 验证电子邮件地址

于 2013-04-14T21:06:16.150 回答
0

试试这个:

(?:(?:^|;)\w+(?:[-+.]\w+)*@\w+(?:[-.]\w+)*\.\w+(?:[-.]\w+)*)+$
于 2013-04-14T12:24:38.890 回答