首页 > 解决方案 > 如何从 url 中获取父域没有子域

问题描述

我很长时间以来一直在尝试这个,需要一个 JavaScript 函数来从 URL 中提取父域。

输入
https://app.domainname.io
http://domainname.net
https://domainname.com
https://app.domain.com
https://www.google.co.in
http://dev2- aa.domain-name.com
https://app.domain.co.in

输出
domainname.io
domainname.net
domainname.com
domain.com
google.co.in
domain-name.com
domain.co.in

谢谢

标签: javascriptregex

解决方案


此解决方案可能并不完美,但适用于您的示例数据:

function extractDomain(url) {
  return url.match(/https?:\/\/(?:\S+\.)*(\S{3,}(?:\.\S{1,3}){1,2})/)[1]
}

解释:

https?:\/\/: 寻找 http 或 https

(?:\S+\.)*:匹配但不捕获任意数量的子域

(\S{3,}(?:\.\S{1,3}){1,2}):捕获域和 TLD。详细地:

S{3,}: 寻找更长的东西,应该是域部分(例如。google)。这并不完美,因为 2 个字母长的域名不匹配。

(?:\.\S{1,3}){1,2}:匹配 TLD 部分:单个 TLD(例如.com)或两个短部分(例如.co.in)。


推荐阅读