5

我创建了一个正则表达式来验证电子邮件地址,这是我的正则表达式:

@"^\w+(\.?[-+\w])*@\w+([-.]\w+)*\.[a-zA-Z]{2,80}$"

我希望邮件地址的最大长度为 80,但使用这个正则表达式,我只限制.

现在

aaa@aa.ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff is invalid

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@aa.ffffffff is valid

我怎样才能做到这一点?

4

3 回答 3

1

您可以在两个步骤内进行验证。试一试。

   Regex validCharsRegex = new Regex(@"^[\w!#$%&'*+\-/=?\^_`{|}~]+(\.[\w!#$%&'*+\-/=?\^_`{|}~]+)*" +
                                                      "@" + @"((([\-\w]+\.)+[a-zA-Z]{2,4})|(([0-9]{1,3}\.){3}[0-9]{1,3}))$");
   Match match = validCharsRegex.Match(stringText.Trim());
   if (match.Success && stringText.Length <=80 )
   {
     // You logic here
   }
于 2013-10-30T08:51:33.097 回答
1

不确定我是否犯了明显的错误,但我已经使用带有YesNo子句的条件表达式进行了测试。测试条件为邮件格式验证:

(?:^\w+\.?[-+\w]*@\w+(?:[-.]\w+)*\.[a-zA-Z]{2,}$)

如果满足条件,则在输入中搜索 6(最小长度 - x@x.xx)和 80 次重复之间的任何字符:

^.{6,80}$

如果条件不满足,再次搜索测试条件中的表达式(不产生结果):

^\w+\.?[-+\w]*@\w+(?:[-.]\w+)*\.[a-zA-Z]{2,}$

整个正则表达式如下所示:

(?(?:^\w+\.?[-+\w]*@\w+(?:[-.]\w+)*\.[a-zA-Z]{2,}$)^.{6,80}$|^\w+\.?[-+\w]*@\w+(?:[-.]\w+)*\.[a-zA-Z]{2,}$)

似乎正在工作。

于 2013-10-30T09:51:44.107 回答
0

您可以检查 String.Lenght 属性以进行验证。如果你想检查“@”字符之前和之后的部分,你可以做一个 string.Split on character @ ,并检查操作产生的2个字符串的长度

于 2013-10-30T08:47:45.173 回答