我创建了一个正则表达式来验证电子邮件地址这是我的正则表达式:
@"^\w+(\.?[-+\w])*@\w+([-.]\w+)*\.[a-zA-Z]{2,80}$"
我希望邮件地址的最大长度为80但是使用此正则表达式我只限制之后的邮件的最后部分。
现在
aaa@aa.ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff is invalid
但是
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@aa.ffffffff is valid
我该怎么做?
答案 0 :(得分: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
}
答案 1 :(得分:1)
不确定我是否犯了一个明显的错误,但我已经使用是和否子句conditional expression进行了测试。测试条件是电子邮件格式验证:
(?:^\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,}$)
似乎正在发挥作用。
答案 2 :(得分:0)
您可以检查String.Lenght属性以进行验证。如果你想检查“@”字符之前和之后的部分,你可以在字符@上做一个string.Split,并检查由操作产生的2字符串的长度