【问题标题】:Regex for multiple specific email addresses多个特定电子邮件地址的正则表达式
【发布时间】:2012-10-20 04:04:00
【问题描述】:

我仍在寻找解决正则表达式的方法,并且遇到了我正在尝试解决的问题。如何验证多个特定的电子邮件地址?

例如,我只想允许验证 testdomain.com、realdomain.com、gooddomain.com。不允许使用所有其他电子邮件地址。

annie@testdomain.com   OK
aaron1@realdomain.com  OK
amber@gooddomain.com   OK

annie@otherdomain.com NOT OK

但我仍然不清楚如何为正则表达式添加多个特定的电子邮件地址。

我们将不胜感激。

谢谢,

【问题讨论】:

  • 我在后台使用 Django 并在注册表中输入。

标签: regex


【解决方案1】:

您的意思是在一个正则表达式中包含各种合法域吗?

\b[A-Z0-9._%-]+@(testdomain|gooddomain|realdomain)\.com\b

【讨论】:

  • 我将 \b 替换为 ^ 并将 \b 替换为 $(我正在使用 django),但它仍然不正确匹配:regex=r'^[A-Z0-9._%-]+ @(testdomain|gooddomain|realdomain)\.com$'
  • 刚刚从您的回答中添加了 [A-Za-z... 并且有效:) 谢谢!
  • 这里,\b 代表一个词的边界。如果那是您正在寻找的,那么您可以用您的行开始/结束标记替换它。如果您希望它正确匹配,则必须设置不区分大小写的标志。
  • 或者在匹配的字符集中同时使用A-Za-z
  • Billy+Moon@gmail.com 是有效的电子邮件地址,您的解决方案将不匹配...
【解决方案2】:

您没有指定您使用的是哪种语言,但大多数正则表达式实现都有逻辑运算符的概念,因此您的模式的域部分将具有以下内容:

(domain1|domain2|domain3)

【讨论】:

    【解决方案3】:
    \b[A-Z0-9._%-]+@(testdomain|realdomain|gooddomain)\.com\b
    

    【讨论】:

      【解决方案4】:

      假设以上适用于 testdomain:

      \b[A-Z0-9._%-]+@(?:testdomain|realdomain|gooddomain)\.com\b
      

      另外,请注意,您必须添加不区分大小写的 i 修饰符才能使用您的测试用例,或者使用 [A-Za-z0-9._%-] 代替 [A-Z0-9._%-]

      here

      【讨论】:

      • 你不能使用正则表达式来验证电子邮件地址
      【解决方案5】:

      为了使其可扩展到许多域,我可能会捕获域名,然后将捕获的域名与代码中的白名单进行比较。

      .+@(.+)

      首先,“.+”将匹配任意数量(大于 0)的任意字符,直到字符串中的最后一个“@”符号为止。 其次,“@”将匹配“@”符号。 第三,“(.+)”将匹配并捕获(由于括号而捕获)“@”符号之后的任何字符串。

      然后,根据您使用的语言,您可以获得捕获的字符串。然后您可以查看该捕获的字符串是否在您的域白名单中。请注意,您需要在最后一步中进行不区分大小写的比较。

      【讨论】:

        【解决方案6】:

        官方标准称为RFC 2822

        对您要允许的所有域名使用 OR 运算符 |。不要忘记在域中转义.

        [a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:testdomain\.com|realdomain\.com|gooddomain\.com)
        

        还可以使用不区分大小写的修饰符/标志来允许地址中使用大写字母。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-07-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多