如何从没有子域的url中获取父域[重复]
Posted
技术标签:
【中文标题】如何从没有子域的url中获取父域[重复]【英文标题】:How to get parent domain out of url no sub-domain [duplicate] 【发布时间】:2018-11-22 05:10:32 【问题描述】:我尝试了很长时间,需要一个 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
输出 域名.io 域名.net 域名.com 域名.com google.co.in 域名.com domain.co.in
谢谢
【问题讨论】:
如果您正在尝试,请显示您的尝试代码 【参考方案1】:此解决方案可能并不完美,但适用于您的示例数据:
function extractDomain(url)
return url.match(/https?:\/\/(?:\S+\.)*(\S3,(?:\.\S1,3)1,2)/)[1]
解释:
https?:\/\/
: 寻找 http 或 https
(?:\S+\.)*
:匹配但不捕获任意数量的子域
(\S3,(?:\.\S1,3)1,2)
:捕获域和 TLD。详细:
S3,
:寻找更长的内容,应该是域部分(例如google
)。这并不完美,因为 2 个字母长的域名不匹配。
(?:\.\S1,3)1,2
:匹配 TLD 部分:单个 TLD(例如 .com
)或两个短部分(例如 .co.in
)。
【讨论】:
【参考方案2】:我们可以试试这个,
function getHostName(url)
var match = url.match(/:\/\/(www[0-9]?\.)?(.[^/:]+)/i);
if (match != null && match.length > 2 && typeof match[2] === 'string' && match[2].length > 0)
return match[2];
else
return null;
function getDomain(url)
var hostName = getHostName(url);
var domain = hostName;
if (hostName != null)
var parts = hostName.split('.').reverse();
if (parts != null && parts.length > 1)
domain = parts[1] + '.' + parts[0];
if (hostName.toLowerCase().indexOf('.co.uk') != -1 && parts.length > 2)
domain = parts[2] + '.' + domain;
return domain;
【讨论】:
getDomain('https://www.google.co.in')
--> co.in
你是对的:D以上是关于如何从没有子域的url中获取父域[重复]的主要内容,如果未能解决你的问题,请参考以下文章