比如我有一个像网址: ftp://xxx:[email protected]/BigFile.zip如何从FTP地址获取基址?
如何使用javascript/jQuery的我得到example.com从这个网址?
比如我有一个像网址: ftp://xxx:[email protected]/BigFile.zip如何从FTP地址获取基址?
如何使用javascript/jQuery的我得到example.com从这个网址?
你可以浏览你喜欢这个解析的网址:
var a = document.createElement('a');
a.href = 'ftp://xxx:[email protected]/BigFile.zip';
var host = a.hostname;
,让你的主机名,在这种情况下会ftp.example.com
,如果由于某种原因,你必须删除子域,你可以做
var domain = host.split('.');
domain.shift();
var domain = domain.join('.');
这里的不同部分的URL - >https://developer.mozilla.org/en-US/docs/Web/API/Location#wikiArticle
下面是使用JavaScript RegExp
input = "ftp://xxx:[email protected]/BigFile.zip";
pattern = new RegExp(/ftp:\/\/\[email protected]\S+?\.([^\/]+)/);
match = pattern.exec(input);
alert(match[1]);
您还可以使用i
在表达式的末尾,使其不区分大小写。
pattern = new RegExp(/ftp:\/\/\[email protected]\S+?\.([^\/]+)/i);
您可以使用jQuery这样的:
var url = "ftp://xxx:[email protected]/BigFile.zip";
var ahref = $('<a>', { href:url })[0]; // create an <a> element
var host = ahref.hostname.split('.').slice(1).join('.'); // example.com
你可以有一个正则表达式来为你做这个。
url = 'ftp://xxx:[email protected]/BigFile.zip'
base_address = url.match(/@.*\//)[0];
base_address = base_address.substring(1, base_address.length-1)
虽然这将包含ftp.example.com
。您可以根据需要对其进行微调。
我只是想尝试/添加不同的东西(性能或通用的解决方案可以不赌,但它的作品,哎,而不涉及DOM /正则表达式!):
var x="ftp://xxx:[email protected]/BigFile.zip"
console.log((x.split(".")[1]+ "." + x.split(".")[2]).split("/")[0]);
对于给定的情况下,可以是最短的,因为始终将 “.COM”
console.log(x.split(".")[1]+ ".com");
另一个(乱)的方法(和将与.com.something
工作:
console.log(x.substring((x.indexOf("@ftp"))+5,x.indexOf(x.split("/")[3])-1));
而且也对这个我们dependend即将有“@ftp”和(在.com.something
在他们之后的至少3个或一个)的斜杠“/”,例如不会与工作:ftp://xxx:[email protected]
最后更新这将是我最好的
作品与.com.something.whatever
(function (splittedString){
//this is a bit nicer, no regExp, no DOM, avoid abuse of "split"
//method over and over the same string
//check if we have a "/"
if(splittedString.indexOf("/")>=0){
//split one more time only to get what we want.
return (console.log(splittedString.split("/")[0]));
}
else{
return (console.log(splittedString));//else we have what we want
}
})(x.split("@ftp.")[1]);
一如往常这取决于你想如何维护你的代码,我只是想兑现肯定大约有到代码的东西不止一种方法。我的回答肯定不是最好的,但基于它你可以改善你的问题。