c#中的正确电子邮件正则表达式验证

时间:2014-05-09 10:13:55

标签: c# regex validation email c#-4.0

请在认为与任何类似问题重复之前阅读该要求。

据我发现20多个电子邮件验证正则表达式但是所有这些都允许

  

a@a.co.in.in.in.in.in.in.in

作为有效的电子邮件地址!!!

我想限制只允许两个点(。)。

例如:

有效电子邮件

  

somename@yahoo.in

     

somename@yahoo.co.in

     

somename@somesite.bizz

     

somename@gmail.com

     

somename@somesite.net

无效的电子邮件

  

@。共

     

@ a.com

     

一个@一个

     

一个@ .COM

     

a@a.co.in.in //允许最多两个点无效

     

a@a.co.in.in.in.in.in.in //允许最多两个点无效

为此我尝试了

  

[A-ZA-Z0-9 ._%+ - ]。。+ @ [A-ZA-Z0-9] + \ [A-ZA-Z] {2,5-} [\ [A-ZA -Z] {2,5-}] {0,1}

它正在使用2个点,但为

投掷无效消息
  

somename@somesite.com

2 个答案:

答案 0 :(得分:1)

我认为它应该像

[a-zA-Z0-9._%+-]+@[a-zA-Z0-9]+\.[a-zA-Z]{2,5}(\.[a-zA-Z]{2,5}){0,1}

我对正则表达式没有经验,但我认为[。[a-zA-Z] {2,5}]被认为是字符组。圆括号可以解决问题。

答案 1 :(得分:0)

一种可能的方法是首先使用允许电子邮件地址a@a.co.in.in.in.in.in.in.in的现有正则表达式之一进行验证。如果验证,则执行以下步骤。

  1. @符号上进行字符串拆分。
  2. 选择拆分的右侧,并在期间.
  3. 上进行拆分
  4. 如果生成的数组的长度为23,那么您找到了一个满足您对有效电子邮件定义的域。如果没有,那就拒绝。
  5. 通过这种方式,您让已经找到的regex处理了咕噜咕噜的工作,而您只需检查您关心的附加条件。