【问题标题】:Regex to validate Email IDs Fails? [duplicate]正则表达式验证电子邮件 ID 失败? [复制]
【发布时间】:2017-01-31 22:25:42
【问题描述】:

我们正在使用regex 来验证电子邮件。但似乎 abcd@q.com 这个电子邮件 ID 失败了。 谁能告知给定的正则表达式有什么问题?

正则表达式:

string sPattern = "^\\w+[\\w\\-\\.]*\\w+\\@\\w+([\\w\\-]*\\w+\\.\\w+){1,4}$";

编辑:我可以在给定的正则表达式中修改什么,以便它在@ 之后接受单字符和多字符域。

例如:abcd@q.comabcd@example.com

【问题讨论】:

  • 先生给定的正则表达式有什么问题?请告知,有很多可用的示例,但由于某种原因,我只想使用它。
  • 试试这个regex
  • 您可以使用在线正则表达式测试器...

标签: c# .net regex


【解决方案1】:
\w+([\\w\\-]*\\w+

在这部分中,您希望在 @. 之间

  • 至少一个字母数字字符 => w+
  • 0 个或多个字母数字字符或- => [\\w\\-]*
  • 至少一个字母数字字符 => w+

所以你只有一个字符q,所以检查失败了。

你应该搜索现有的电子邮件验证模式,它相当复杂!

【讨论】:

    【解决方案2】:
    bool isEmail = Regex.IsMatch(emailString, @"\A(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)\Z", RegexOptions.IgnoreCase);
    

    【讨论】:

    • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
    【解决方案3】:

    您应该查找现有的正则表达式以进行电子邮件验证。但是我可以从你的正则表达式中看出你有很多不必要的“\w”。删除它们:

    ^[\w\-\.]+\@([\w\-]+\.\w+){1,4}$
    

    将有一个有效的正则表达式。虽然不是一个非常准确的电子邮件验证

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-20
      • 2011-04-09
      相关资源
      最近更新 更多