2012-07-15 40 views
0

我想創建一個只解析符合當前域的鏈接的正則表達式。我想知道是否有像{hostname}這樣的內容可以在Javascript正則表達式對象中使用,因此它只會將搜索鎖定到針對當前頁面特定域的那些鏈接。正則表達式中的域名/主機名Javascript

例如:如果域是www.domain.com,它將搜索僅鏈接以該特定域開始的鏈接。如果域名是anotherdomain.com,它將只搜索以該特定域名開頭的鏈接。我的正則表達式更復雜,但我希望能夠放置某種全局變量,它將被當前域取代。

+0

你有任何代碼你寫的嗎?目前的答案是「否」。 – Polyov 2012-07-15 17:36:50

+0

不可以。但是,您能分享您想要做的更多細節嗎?爲什麼你只需要一個正則表達式和正則表達式?我有一種感覺,這可以用更簡單的方式解決。 – 2012-07-15 17:39:01

回答

2

您可以通過Location對象檢索當前頁面的主機名:

var hostname = window.location.hostname; 

然後你就可以通過連接到你的正則表達式組合使用變量的正則表達式:

var re = new RegExp("<start of your regex>" + hostname + "<end of your regex>"); 
2

你可以從window.location.hostname獲取主機名。

然後,您將希望轉義主機名中潛在的特殊字符。

主機名通常包括.這是一個正則表達式中的特殊字符,它當然也可以包含-,它可以是一個特殊字符。

可能最好是進行防禦性編程,並在正則表達式中使用特殊字符來逃避所有可能是特殊字符的東西,即使它們中的很多不應該真正出現。從Escape string for use in Javascript regex您可以使用此功能:

function escapeRegExp(str) { 
    return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); 
} 

然後你可以這樣做:

var regexpFragment = escapeRegExp(window.location.hostname); 
+0

+1用於轉義特殊字符,我忘記提及了。 – joelrobichaud 2012-07-15 18:46:50