2014-12-04 111 views
2

方案URL路徑提取使用正則表達式

我想從document.location解壓路徑字符串,不包括斜線。 因此,舉例來說,如果網址是:

http://stackoverflow.com/questions/ask 

我會得到:

questions/ask 

這應該是簡單的:

/* group everything after the leading slash */ 
var re = /\/(.+)/gi; 
var matches = document.location.pathname.match(re); 
console.log(matches[0]); 

但是,如果我運行這個片段在Firebug控制檯,我仍然得到主導的斜線。 我已經測試了regexp,並且正則表達式引擎正確地提取了該組。

問題

如何正確地獲得第1組串?

回答

1

你是說尾隨或斜線?從你的帖子看起來像引導斜線。

document.location.pathname.replace(/^\//,"") 

順便說一句,你的正則表達式是正確的,但你只需要刪除gi和閱讀matches[1]而非matches[0],因爲matches[0]是整個字符串的正則表達式匹配,而matches[1]是匹配的字符串中截取部分(引用正則表達式中的括號)。

var matches = document.location.pathname.match(/\/(.+)/); 
console.log(matches); // ["https://stackoverflow.com/questions/ask", "questions/ask"] 
+0

正確,我的意思是領先的斜線。編輯的問題。 – 2014-12-04 11:29:19

2

如果你只是想不帶正斜槓的路徑名,你並不需要正則表達式。由於location.pathname總是/開始,你可以簡單地把字符串從第一個索引:

document.location.pathname.substr(1) // or .slice(1) 
+0

完美KISS回答。 – 2014-12-04 11:00:56

1

使用正則表達式,你可以這樣做:

var m = 'http://stackoverflow.com/questions/ask'.match(/\/{2}[^\/]+(\/.+)/); 
console.log(m[1]); /questions/ask