2010-09-15 69 views
7

問題如何結束的正則表達式以斜槓在Javascript

我試圖使用Javascript的URL的散列部相匹配。哈希將有格式

/#\/(.*)\// 

這是很容易使用「新的RegExp()」創建一個JS正則表達式的方法來實現,但我想不出如何使用標準格式去做,因爲最後的兩個正斜槓開始評論。有沒有另外一種方法可以寫出不會發表評論的文章?

// works 
myRegexp = new RegExp ('#\/(.*)\/'); 

// fails 
myRegexp = /#\/(.*)\// 
+0

這失敗了? 're = /#\/(()*//);''給我''/#\/((()*)''在控制檯上... – gnarf 2010-09-15 13:36:25

+1

你測試過了嗎?用什麼?這對解析器來說似乎是一件愚蠢的事情。 – lincolnk 2010-09-15 13:38:35

+0

這很奇怪。我看不到我在代碼中改變了什麼,但在跨作品中複製這些代碼很好。我的錯。 – lonesomeday 2010-09-15 13:47:56

回答

10

我想匹配使用JavaScript的URL的哈希部分。

是的,不要這樣做。每個瀏覽器都內置了一個完美的URL解析器。位置對象(window.location或鏈接)上設置一個href,你可以從性能hostnamepathnamesearchhash

var a= document.createElement('a'); 
a.href= 'http://www.example.com/foo#bar#bar'; 
alert(a.hash); // #bar#bar 

如果你把讀/寫URL部分的路徑樣/ - 在散列分隔列表中,我建議按照hash.split('/')

至於正則表達式,兩個版本對我來說都是一樣的。尾隨//不會引起評論。如果您只想安撫一些令人不快的語法突出顯示,您可能會將/轉義爲\x2F

+0

哦,很好 - 我會用它。謝謝! – lonesomeday 2010-09-15 18:17:00