检查可选号码的电子邮件地址

时间:2016-09-16 14:34:10

标签: regex asp.net-web-api

我尝试使用正则表达式来验证电子邮件地址,电子邮件地址的规则之一是,他们可以在“' @'之前使用可选的号码。标志。但是,当程序进入该评估时,该数字永远不是可选的。

我目前有:

Regex.IsMatch(user.EmailAddress, Regex.Escape(basicExpected) + @"^\d{1}?$" + "@email.com")

basicExpectedstring basicExpected = user.GivenName + "." + user.Surname;

所以电子邮件地址应为

  

first.last {optional number} @ email.com

作为dumby数据,两个例子是:

  • john.doe@live.ca
  • john.doe2@live.ca

第二个john doe获得2,因为Active Directory中有两个人名为John Doe,所以这个数字是两者之间的伪装差异。当评估结束时,由于没有数字,john.doe@live.ca将被确定为不正确

更新 我将阅读$作为?犯了大错,因此\d?是正确的我只是一直误读。我为我的错误道歉,感谢你坚持找到解决方案

2 个答案:

答案 0 :(得分:1)

你的问题是你的量词并没有表明这个数字是可选的,它说它是懒惰而不是贪婪。

\d{1}? # this is incorrect

正则表达式中的可选单个数字构造起来更简单。试试这个:

\d? # this is preferable

答案 1 :(得分:0)

如果我读对了我解释的内容:

first.last{optional number}@email.com应与

匹配
user.GivenName + "." + user.Surname + "^\d{1}?$" + ".@email.com"

我在这里看到一些问题:

    {li} in "^\d{1}?$"^$表示开始和结束。你不希望这样,因为你周围有其他的东西。
  • “。@ email.com”:为什么第一个点.

<强>结论:

"\d?"是你想要的条件号码,并在 @ email.com 之前删除.

相关问题