过滤地址网址

时间:2013-05-07 22:57:19

标签: javascript jquery regex

我有这个示例字符串列表:

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中使用最小模糊来实现此目的?

3 个答案:

答案 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修改为您需要的任何内容(格式化输出)(使用innerHTMLbr \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”),但由于您接受了返回子域名的答案(并且在第四个值上失败),我将在此处留下。