【问题标题】:Regular expression for email to allow only two domain电子邮件的正则表达式只允许两个域
【发布时间】:2010-12-01 10:06:44
【问题描述】:

我必须像这样为电子邮件 ID 创建一个正则表达式

xyz@yahoo.com 和 xyz@gmail.com

我只需要允许 yahoo 和 gmail 作为域,而不是任何其他域。我使用了这个表达式 \w+([-+.]\w+)*@yahoo.com 。它适用于雅虎。但我也想包括 gmail。我怎样才能将它修改为除了gmail?

我正在使用 ASP.NET 2.0

【问题讨论】:

  • 为什么不只检查@中的子字符串
  • @Tom Gullen,因为正则表达式总是是正确的选择。

标签: asp.net regex


【解决方案1】:

替换:

yahoo\.com

与:

(yahoo\.com|gmail\.com)

或:

((yahoo|gmail)\.com)  

【讨论】:

    【解决方案2】:

    要添加替代方案,您只需要执行(yahoo\.com|gmail\.com) 并且应该匹配任何一个。

    【讨论】:

    • . 匹配任何字符。 yahooTcom 会通过你的测试。
    • 是的。我只是基于原件的复制粘贴,添加了替代品。显然,我的布莱恩完全参与其中还为时过早。 :) 我还应该补充一点,在原始的正则表达式中,我怀疑有很多东西没有被正确覆盖,但电子邮件正则表达式经常出现......
    【解决方案3】:

    +([-+.]\w+)*@(?:yahoo|gmail).com

    【讨论】:

      【解决方案4】:
      1. 请继续阅读 this article on email validation,因为您的正则表达式并不完美,并且是否存在误报/误报问题
      2. 首先检查您的电子邮件字符串是否包含“@yahoo”或“@gmail”
      3. 使用 1. 中的信息检查该字符串是否为有效电子邮件

      更新:可以找到一个现成的电子邮件验证器here;既然来自MSDN,应该是正确的

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-29
        • 2011-09-04
        • 1970-01-01
        • 2012-01-12
        • 2011-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多