首页 > 解决方案 > 仅来自“sub.domain.com” JS 的正则表达式“域”

问题描述

我使用此规则来获取唯一的主机名,但它不适用于超过 2 个字符的子域。应该是什么else if时候return hostname[1],我试过了,但还是第一次if运行。我愿意接受正确的正则表达式或替代解决方案。

效劳于:

代码

var match = url.match(/:\/\/(www[0-9]?\.|[a-zA-Z]\.)?(.[^/:]+)/i);
if (match != null && match.length > 2 && typeof match[2] === 'string' && match[2].length > 0) {
    var hostname = match[2].split(".");
    return hostname[0];
}
else {
    return null;
}

标签: javascriptregex

解决方案


尽管它可以解决您的问题,但它不是必需的正则表达式解决方案。

const list = ['www.google.com',
'en.store.com',
'google.com',
'www2.site.com',
'www.google.com.tr',
'https://www.google.com.tr',
'shop.store.com'
];

function getName(url) {
 const parts = url.split('.');
 return  parts[parts.length - (parts.length > 3 ? 3 : 2 )];   
}

list.forEach((item) => {
   console.log(item,getName(item)) ;
});


推荐阅读