【发布时间】: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