按顺序消除多个时段

时间:2009-08-12 16:25:37

标签: .net regex email

我在.NET中使用此正则表达式来验证电子邮件地址:

([A-Za-z0-9]|[A-Za-z0-9](([\w,=\.!\-#|\$%\^&*\+/\?\{\}~]+)*)[\w,=!\-#|\$%\^&*\+/\?\{\}~])@(?:[A-Za-z0-9-]+\.)+[a-zA-Z]{2,9}$

它有一个问题:在@符号之前的本地名称中,它按顺序接受多个句点。例如,ab...c@gmail.com

有谁知道我如何解决这个问题,并保持其余的逻辑不变?

由于

2 个答案:

答案 0 :(得分:1)

while (email.contains(".."))
 email = email.Replace("..",".");

答案 1 :(得分:1)

您可以在“@”之前阻止连续句点,就像 之后阻止它们一样

^
[A-Za-z0-9][\w,=!#|$%^&*+/?{}~-]+
(?:\.[A-Za-z0-9][\w,=!#|$%^&*+/?{}~-]+)*
@
(?:[A-Za-z0-9-]+\.)+
[a-zA-Z]{2,9}
$

你需要删除换行符;为了便于阅读,我将其分解,因为无论如何它都不适合一行。摆脱了许多没有减轻体重的东西。