【问题标题】:For an email address, match either a domain or a domain with a subdomain?对于电子邮件地址,匹配域或域与子域?
【发布时间】:2020-09-21 22:45:30
【问题描述】:

我正在尝试创建一个适用于电子邮件的正则表达式。我需要匹配一封电子邮件来自某个域或来自某个域和子域。域必须精确匹配。

我有这个:

@.*\.?somedomain\.com$

是的,这将匹配:

  fdsafd@a1.somedomain.com
  fdsafd@somedomain.com
  fdsafd@aabbddjjj.somedomain.com

这是我需要的。但是,它也是一个包含somedomain.com 的域,这不是我想要的:

fdsafd@partsomedomain.com

我希望精确匹配域somedomain.com

如何解决?

【问题讨论】:

  • 您需要将整个子域设为可选,而不仅仅是点。不要使用.*\.?,而是使用(?:.*\.)? (demo) 之类的东西。此外,您可能应该用 more strict 替换 .* 部分。
  • @41686d6564 我正在使用另一种解决方案,意识到我错了,现在我发布了一个基本上是您的评论的答案。告诉我,如果您将其发布为答案,我将删除我的。
  • @41686d6564 为什么需要?:
  • @Aaron 没关系。只要OP解决了他们的问题,谁发布答案并不重要:)
  • @kosmosu 叫做non-capturing group

标签: regex


【解决方案1】:

我会匹配以下内容:

@(.*\.)?somedomain\.com$

somedomain 保证是一个完整的 DN 路径,而不是一个路径的一部分,因为它要么跟在可选组的结尾 . 之后,要么跟在它前面的 @ 之后。

【讨论】:

    【解决方案2】:

    试试下面:

    \w+\.com
    

    它将选择.com 及其前面的单词。

    【讨论】:

      猜你喜欢
      • 2016-03-20
      • 2012-09-07
      • 1970-01-01
      • 1970-01-01
      • 2017-03-02
      • 2019-10-22
      • 2011-06-14
      • 1970-01-01
      • 2013-12-20
      相关资源
      最近更新 更多