我在很长一段时间内尝试了这个,需要一个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
谢谢
答案 0 :(得分:0)
此解决方案可能并不完美,但适用于您的示例数据:
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
)。
答案 1 :(得分:0)
我们可以试试这个,
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;
}