例如我有一个网址: ftp://xxx:xxx@ftp.example.com/BigFile.zip
如何使用javascript / jquery从此网址获取example.com?
答案 0 :(得分:2)
您可以让浏览器为您解析URL:
var a = document.createElement('a');
a.href = 'ftp://xxx:xxx@ftp.example.com/BigFile.zip';
var host = a.hostname;
这会获得主机名,在本例中为ftp.example.com
,如果由于某种原因您必须删除子域,则可以执行
var domain = host.split('.');
domain.shift();
var domain = domain.join('.');
以下是网址的不同部分 - > https://developer.mozilla.org/en-US/docs/Web/API/Location#wikiArticle
答案 1 :(得分:0)
以下是使用javascript RegExp
input = "ftp://xxx:xxx@ftp.example.com/BigFile.zip";
pattern = new RegExp(/ftp:\/\/\S+?@\S+?\.([^\/]+)/);
match = pattern.exec(input);
alert(match[1]);
您还可以在正则表达式的末尾使用i
使其不区分大小写。
pattern = new RegExp(/ftp:\/\/\S+?@\S+?\.([^\/]+)/i);
答案 2 :(得分:0)
您可以像这样使用jquery:
var url = "ftp://xxx:xxx@ftp.example.com/BigFile.zip";
var ahref = $('<a>', { href:url } )[0]; // create an <a> element
var host = ahref.hostname.split('.').slice(1).join('.'); // example.com
答案 3 :(得分:0)
您可以使用正则表达式为您执行此操作。
url = 'ftp://xxx:xxx@ftp.example.com/BigFile.zip'
base_address = url.match(/@.*\//)[0];
base_address = base_address.substring(1, base_address.length-1)
但这将包含ftp.example.com
。您可以根据需要对其进行微调。
答案 4 :(得分:0)
我只想尝试/添加不同的东西(不能为性能或一般解决方案下注,但它有效且嘿!没有涉及DOM / regexp):
var x="ftp://xxx:xxx@ftp.example.com/BigFile.zip"
console.log((x.split(".")[1]+ "." + x.split(".")[2]).split("/")[0]);
对于给定的情况可以是最短的,因为总是会是&#34; .com&#34;
console.log(x.split(".")[1]+ ".com");
另一种(凌乱)方法(并将与.com.something
一起使用:
console.log(x.substring((x.indexOf("@ftp"))+5,x.indexOf(x.split("/")[3])-1));
在这方面,我们依赖于&#34; @ ftp&#34;和斜线&#34; /&#34; (例如,至少有3个或.com.something
之后的一个)不适用于:ftp://xxx:xxx@ftp.example.com
上次更新这将是我最好的
适用于.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]);
一如既往,这取决于您希望代码的可维护性,我只想表达对不止一种编码方式的肯定。我的回答肯定不是最好的,但基于此,你可以改善你的问题。