2015-05-29 65 views
0

獲取網址最後一部分(省略任何參數)的最佳方式是什麼?還網址可能或可能不包括最後的「/」字符JavaScript獲取最後一個網段

例如

http://Home/Billing/Index.html?param1=2&another=2 
should result in: Index.html 

http://Home/Billing/Index.html/ 
should result in: Index.html 

我已經試過,但我不能讓如何檢查最後/

ar href = window.location.pathname; 
      var value = href.lastIndexOf('/') + 1); 
+0

像這樣的東西http://stackoverflow.com/questions/1302306/how-to-pull-the-file-name-from-a-url-using-javascript-jquery? – Dhiraj

+0

[FileName from url excluded querystring]可能的重複(http://stackoverflow.com/questions/6035352/filename-from-url-excluding-querystring) –

+2

這兩個都不考慮最後的'/'字符。請看看示例2我發佈了 – ShaneKm

回答

1

也許有點像?

window.location.pathname.split('?')[0].split('/').filter(function (i) { return i !== ""}).slice(-1)[0] 
  1. 上分割「?拋出任何查詢字符串參數
  2. 獲取第一個拆分
  3. 拆分'/'。
  4. 對於那些分裂,過濾掉所有空字符串
  5. 獲取剩餘
+0

這個作品。謝謝。我會在30秒內接受它 – ShaneKm

1

@psantiago答案的偉大工程的最後一個。如果你想做,你可以爲實現相同,但使用正則表達式如下:

var r = /(\/([A-Za-z0-9\.]+)(\??|\/?|$))+/; 
r.exec("http://Home/Billing/Index.html?param1=2&another=2")[2]; //outputs: Index.html 
r.exec("http://Home/Billing/Index.html/"); //outputs: Index.html 

在我看來,上面的代碼比使用的分割操作更高效,更清潔。