You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求修复正则表达式,精准提取不含子域名、路径的主域名

修复正则表达式以精准提取主域名(排除子域、路径)

嘿,我来帮你搞定这个正则的问题!你之前写的正则只能匹配不带路径的URL,一旦URL后面带了文件夹或者文件名就匹配失败,而且没考虑到多级子域、协议这些情况对吧?咱们来调整一下,让它能覆盖所有你提到的URL变体,精准提取出你想要的主域名。

原正则的问题分析

你之前的正则:/([a-zA-Z0-9-]+)(\.[a-zA-Z]{2,5})?(\.[a-zA-Z]+$)
它的核心问题是用了$锚定字符串结尾,这就导致一旦URL后面有路径(比如/blog或者/file.html),正则就会匹配失败,因为结尾变成了路径内容而不是域名。另外它也没处理HTTP/HTTPS协议、多级子域名的排除逻辑。

修复后的正则表达式

这里给你一个适配所有场景的正则:

/(?:https?:\/\/)?(?:www\.|[\w-]+\.)*([\w-]+\.(?:[a-zA-Z]{2,}|[a-zA-Z]{2,}\.[a-zA-Z]{2,}))(?=\/|$)/

正则各部分解释

  • (?:https?:\/\/)?:匹配可选的HTTP/HTTPS协议,用非捕获组(?:...)避免把协议部分算进提取结果里
  • (?:www\.|[\w-]+\.)*:匹配任意多级子域名(包括www.、api.这种),同样用非捕获组排除这些子域,只保留主域名部分
  • ([\w-]+\.(?:[a-zA-Z]{2,}|[a-zA-Z]{2,}\.[a-zA-Z]{2,})):这是核心的捕获组,用来提取主域名,既支持domain.com这种二级域名,也支持masterdomain.com.au、luxury.co.uk这种带国家顶级域名的组合
  • (?=\/|$):正向预查,确保匹配到主域名后,后面要么是路径的起始斜杠/,要么是字符串结尾,这样就会自动忽略后面的文件夹、文件名内容

测试验证

用你提到的所有URL变体测试,都能精准提取到目标主域名:

  • http://domain.com → 提取结果:domain.com
  • https://www.masterdomain.com.au → 提取结果:masterdomain.com.au
  • https://api.luxury.co.uk → 提取结果:luxury.co.uk
  • globo.us/ → 提取结果:globo.us
  • test.com/path/to/file.html → 提取结果:test.com
  • https://sub.sub.google.com.br → 提取结果:google.com.br
  • www.example.org/blog → 提取结果:example.org

小提示

如果遇到一些特殊的超长顶级域名(比如.app、.dev之外的更长后缀),可以把正则里的[a-zA-Z]{2,}调整为[a-zA-Z]{2,6},这样能覆盖更多罕见的顶级域名情况。

内容的提问来源于stack exchange,提问作者user3352263

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:27:03