0

我使用以下表达式来验证电子邮件地址(我在互联网上的某个地方找到了它,所以如果它完全错误,请不要怪我:-)):

^((?:(?:(?:[a-zA-Z0-9_][.-+]?)*)[a-zA-Z0-9_][.-+]?)*)\@( (?:(?:(?:[a-zA-Z0-9][.-_]?){0,62})[a-zA-Z0-9])+).([a-zA- Z0-9]{2,6})$

它在大多数情况下都可以正常工作,但由于某种原因,在电子邮件地址的某处添加空格会使 IsMatch 方法非常慢。似乎计算时间随着电子邮件地址中空间的位置而增长。以下无效的电子邮件地址说明了问题。

test@aweb serversomewhereintheworld.com(慢)

test@awebserversomewhere intheworld.com(非常慢)

用于验证电子邮件地址的正则表达式有什么问题?

4

1 回答 1

1

由于电子邮件地址中的空格无效,因此只需在进行完整验证之前单独检查空格,如果发现任何空格,请不要进行完整(慢速)验证。

此外,有关将正则表达式用于电子邮件地址有什么问题的完整讨论,请参阅以下问题:使用正则表达式验证电子邮件地址

于 2012-05-10T10:45:42.253 回答