2014-03-19 97 views

回答

2

你可以浏览你喜欢这个解析的网址:

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('.'); 

FIDDLE

这里的不同部分的URL - >https://developer.mozilla.org/en-US/docs/Web/API/Location#wikiArticle

0

下面是使用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); 
0

您可以使用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 
0

你可以有一个正则表达式来为你做这个。

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。您可以根据需要对其进行微调。

0

我只是想尝试/添加不同的东西(性能或通用的解决方案可以不赌,但它的作品,哎,而不涉及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]

最后更新这将是我最好的

  • 没有DOM /正则表达式,更好的(也混淆),以前的那些
  • 解决问题关于有或没有斜线,
  • 仍依赖于具有“@ ftp。“在字符串中。
  • 作品与.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]); 
    

一如往常这取决于你想如何维护你的代码,我只是想兑现肯定大约有到代码的东西不止一种方法。我的回答肯定不是最好的,但基于它你可以改善你的问题。