2013-07-02 27 views
-2

我想要得到的域名加www正則表達式查找域名加www

例如:https://www.gmail.com/anything 輸出應gmail.com(或.net或.org)

誰能幫我給這個正則表達式?

+0

你嘗試過什麼了嗎? – j08691

+1

你嘗試了什麼? SO不是一個代碼生成器。 –

+0

我試過了,我的正則表達式是(?<= \。|)\ w + \。\ w + $它在ruby中工作不在coffescript –

回答

4

使用正則表達式,如/(?:https?:\/\/)?(?:www\.)?(.*?)\//

var str = "https://www.gmail.com/anything"; 
var match = str.match(/(?:https?:\/\/)?(?:www\.)?(.*?)\//); 
console.log(match[match.length-1]); //gmail.com (last group of the match) 

注:這將讓該HTTP/HTTPS協議,不包括WWW之後的一切 - 到第一個斜槓。

額外注:很多站點上使用子域名 - 因此mail.google.com會突然變得google.com,因此無法正常工作。礦山包括www每個子域。

+0

感謝和它的工作和問題是我可能會或可能不會得到https 例如:也得到www.gmail.com。那麼我怎麼能改變這個工作? –

+0

@kittuss通過使用問號。 'https?:\/\ /'表示「字符串」http「,後面跟着一個可選的's',後面跟着'://'」。因此'(https?:\/\ /)?'表示前一個,但問號表示「重複1或0次」(所以它是可選的)。檢查我的更新的工作代碼的答案。當括號以'?:'開始時,它是一個非捕獲組,意思是「不要把這個匹配放入我們的匹配結果中」。 – h2ooooooo

+0

非常感謝..這就像一個魅力! –

3

您可以使用<a>來獲取有關URL的信息。例如:

var a = document.createElement("a"); 
a.href = "http://www.google.com"; 

可以檢索與域:

var domain = a.hostname; 

你可以剝去所有 「www。」:

domain = domain.replace(/^www\./, ""); 

作爲一種可重複使用的功能,你可以用途:

function getDomain(url) { 
    var a, domain; 

    a = document.createElement("a"); 
    a.href = url; 

    domain = a.hostname; 
    domain = domain.replace(/^www\./, ""); 

    return domain; 
} 

DEMO:http://jsfiddle.net/DuK6D/


More info/attributes about the HTMLAnchorElement JS object on MDN

+1

喜歡這個。非常簡單,有效和萬無一失 – mvinayakam