我有这个示例字符串列表:
var s="http://www.website1.com/, http://www.website2.es/forum/something, http://website3.info, website4.is";
输出将是:
网站1.com 网站2.es 网站3.info 网站.is
如何在 jquery或javascript中用最少的模糊来实现这一点?
我有这个示例字符串列表:
var s="http://www.website1.com/, http://www.website2.es/forum/something, http://website3.info, website4.is";
输出将是:
网站1.com 网站2.es 网站3.info 网站.is
如何在 jquery或javascript中用最少的模糊来实现这一点?
不是最有效的,但使用 php.js 中的 parse_url ( 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);
Why not simply this:
//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,'') '
}
Working jsfiddle demo here.
You can modify the for-loop it to whatever (formatted output) you need (using innerHTML
and br
or \n
for in textarea, etc.)
在 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”),但是由于您接受了返回子域的答案(并且在第四个值上失败),所以我将把它留在这里。