2015-01-06 32 views
1

我有一個正則表達式從URL獲取主域名的問題。這是因爲如下,如果我有網址..正則表達式來獲取javascript中的域名?

http://domain.com/return/java.php?hello.asp 
http://www.domain.com/return/java.php?hello.asp 
http://blog.domain.net/return/java.php?hello.asp 
http://us.blog.domain.co.us/return/java.php?hello.asp 
http://domain.co.uk 
http://domain.net 
http://www.blog.domain.co.ca/return/java.php?hello.asp 
http://us.domain.com/return/ 

從所有這一切,我應該只得到爲正則表達式的輸出.. 讓我怎麼辦呢? 我用過;

var url = urls.match(/[^.]*.(com|net|org|info|coop|int|co\.uk|org\.uk|ac\.uk|uk)/g); 

,但它不工作的

http://domain.net 

所以有人可以幫助我了這一點。

+1

域可以由 「/」 或結束行結束,所以「匹配(/ [^] *(COM | net | org | info | coop | int | co \ .uk | org \ .uk | ac \ .uk | uk)(/ | $)g)「可以工作。 –

+0

似乎工作,https://regex101.com/r/dL6nN7/2和http://jsbin.com/zanivonijo/1/edit?js,console,但我可能會錯過重點? –

+0

@ Fumu7:你曾經給過的東西不起作用。 –

回答

3

您可以使用URL,而不是正則表達式

var url = new URL("http://domain.com/return/java.php?hello.asp"); 
console.log(url.hostname); 
=> domain.com 

OR

如果你想在協議以及

var url = new URL("http://domain.com/return/java.php?hello.asp"); 
console.log(url.protocol+"//"+url.hostname); 
= > http://domain.com 
+0

IE支持是一個問題。 –

-1
var url = urls.match(/[^./]*.(com|net|org|info|coop|int|co\.uk|co\.us|co\.ca|org\.uk|ac\.uk|uk)/g); 

只是增加了一個/和更新列表頂部級別的域來匹配你的例子。
儘管我不建議將頂級域名列表保存在正則表達式中。它太多了。 http://en.wikipedia.org/wiki/List_of_Internet_top-level_domains

0

對此有幫助嗎?在

http://domain.com 
http://www.domain.com 
http://blog.domain.net 
http://us.blog.domain.co.us 
http://domain.co.uk 
http://domain.net 
http://www.blog.domain.co.ca 
http://us.domain.com 
0

這裏

(http|https|ftp):\/\/([a-zA-Z0-9.])+/g 

比賽是一個解決方案改變了正則表達式位:

url.match(/https?:\/\/[^/]+((?=\/)|$)/g); 
//tested with Chrome 38+ on Win7 

Basiclly檢查斜線/或字符串結束$

更新替換爲直列#1碼的jsfiddle鏈路:

var urls = ['http://domain.com/return/java.php?hello.asp', 
 
    'http://www.domain.com/return/java.php?hello.asp', 
 
    'http://blog.domain.net/return/java.php?hello.asp', 
 
    'http://us.blog.domain.co.us/return/java.php?hello.asp', 
 
    'http://domain.co.uk', 
 
    'http://domain.net', 
 
    'http://www.blog.domain.co.ca/return/java.php?hello.asp', 
 
    'http://us.domain.com/return/' 
 
]; 
 

 
var htmlConsole = document.getElementById("result"); 
 
var htmlTab = "    "; 
 
var htmlNewLine = "<br />"; 
 

 
htmlConsole.innerHTML = ""; 
 
for (var id in urls) { 
 

 
    htmlConsole.innerHTML += "URL: " + urls[id] + htmlNewLine; 
 

 
    var matchResults = urls[id].match(/https?:\/\/[^/]+((?=\/)|$)/g); 
 

 
    for (var innerIdx in matchResults) { 
 
    htmlConsole.innerHTML += htmlTab + "MatchNumber: " + innerIdx + " MatchValue: " + matchResults[innerIdx] + htmlNewLine; 
 
    } 
 

 
    htmlConsole.innerHTML += htmlNewLine; 
 

 
}
<div id="result"> 
 
</div>