10

我有一个正则表达式来匹配网页的子域,如下所示

 "^https://[^/?]+\\.(sub1|sub2\\.)domain\\.com"

什么是接受 domain.com 的任何子域的正则表达式。

编辑:

我的问题不完整,我的正则表达式只接受

 https:[any number of sub domain s ].sub1domain.com 

或者

 https://[any number of sub domain s ].sub2domain.com

很抱歉发布不完整的问题。

4

7 回答 7

34

这应该适合您的需求:

https?://([a-z0-9]+[.])*sub[12]domain[.]com

正则表达式可视化

于 2013-10-09T14:22:42.057 回答
3

我假设不希望子域仅因数字而有所不同。使用这个正则表达式:

(^https:\/\/(?:[\w\-\_]+\.)+(?:subdomain1|subdomain2).com)

单个捕获组是完整的 URL。只需将 subdomain1 和 subdomain2 替换为您的实际子域即可。

我在regex101.com上对此进行了测试

于 2013-10-09T14:11:02.223 回答
1

就像是:

(http|https)://(.*).domain.com

此时,您需要第二个标签(即\2或变量)。$2请注意,此正则表达式不验证 URL。

证明:https ://www.debuggex.com/r/3KYGmAlnBq3C_fT

于 2013-10-09T13:13:35.957 回答
1

试试http://([^.]+\\.)+sub[12]domain.comRegexPlanet是一个以最小的设置痛苦测试正则表达式的好地方。

于 2013-10-09T13:36:08.710 回答
1

假设子域仅包含数字和小写字母并且您不想接受子子域:

[0-9a-z]*\.domain\.com

更新:

https://.*\.sub[1|2]domain\.com

火柴

https://sub1.sub2.sub1domain.com 
https://sub1.sub1domain.com 

但不是

https://sub1domain.com 
于 2013-10-09T13:16:21.103 回答
1

你会用

"^https://[^/?]+\\.([^.]+)\\.domain\\.com"

归结为匹配

"[^.]+"

对于任何子域。将仅匹配子域的最后一部分(www.xxx.domain.com 将捕获组 1 中的“xxx”)

于 2013-10-09T13:16:32.990 回答
0

这是一个匹配任意数量的子域的正则表达式,也允许 IDN 域并检查 63 个或更少字符的限制。它检查 - 不是在第一个或最后一个位置。

https?://([a-z0-9](?:[a-z0-9-]{1,61}[a-z0-9])?[.])*sub[12][.]domain[.]com/
于 2019-04-19T16:10:30.210 回答