正则表达式匹配匹配域的所有子域

时间:2013-10-09 13:04:07

标签: java regex

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

 "^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

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

7 个答案:

答案 0 :(得分:20)

这个应该符合您的需求:

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

Regular expression visualization

答案 1 :(得分:2)

我假设不希望子域只是一个数字而不同。使用此正则表达式:

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

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

我在regex101.com

上对此进行了测试

答案 2 :(得分:1)

类似的东西:

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

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

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

答案 3 :(得分:1)

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

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

更新

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

匹配

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

但不是

https://sub1domain.com 

答案 4 :(得分:1)

你会用

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

归结为匹配

"[^.]+"

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

答案 5 :(得分:1)

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

答案 6 :(得分:0)

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

https?://([a-z0-9](?:[a-z0-9-]{1,61}[a-z0-9])?[.])*sub[12][.]domain[.]com/