我有这个示例字符串列表:
var s="http://www.website1.com/, http://www.website2.es/forum/something, http://website3.info, website4.is";
,输出为:
website1.com website2.es website3.info website.is
如何在jquery 或 javascript中使用最小模糊来实现此目的?
答案 0 :(得分:2)
为什么不简单:
//your string:
var str=("http://www.website1.com/, http://www.website2.es/forum/something, http://website3.info, website4.is");
//my function:
function gtBaseUrl(s){
return s.split('://').pop().split('/')[0];
}
//example use:
var lnks=str.split(', ');
for(var i=0, L=lnks.length; i < L; i++){
//do stuff with each url
alert( gtBaseUrl(lnks[i]).replace(/^www./i,'') );
//if you don't want www. stripped then remove: ' .replace(/^www./i,'') '
}
使用jsfiddle demo here。
您可以将for-loop修改为您需要的任何内容(格式化输出)(使用innerHTML
和br
或 \n
for textarea等。)
答案 1 :(得分:2)
效率最高,但是使用php.js中的parse_ur(http://phpjs.org/functions/parse_url/):
var sList = "http://www.website1.com/, http://www.website2.es/forum/something, http://website3.info, website4.is";
var aStr = sList.split(', ');
var sResult = "";
for(var i in aStr)
{
var oUrlParts = parse_url(aStr[i]);
sResult += oUrlParts['host']+"\n\n";
}
console.log(sResult);
答案 2 :(得分:1)
在JavaScript中执行此操作的常用方法是创建a
元素,将URL分配给其href
属性,然后获取其hostname
属性。
var a = document.createElement('a');
a.href = "http://stackoverflow.com/questions/16429929/filter-address-url";
console.log(a.hostname); // "stackoverflow.com"
没有外部依赖,三行代码。
当然,你也可以这样做:
"http://stackoverflow.com/questions/16429929/filter-address-url".split('/')[2]
从您的问题来看,您似乎不想在结果中使用子域名(“www”),但由于您接受了返回子域名的答案(并且在第四个值上失败),我将在此处留下。