我有一個包含路徑的字符串,如是否可以使用正則表達式切斷字符串的開始?
/foo/bar/baz/hello/world/bla.html
現在,我想從倒數第二個/
得到的一切,即結果應該是
/world/bla.html
這是可能使用正則表達式?如果是這樣,怎麼樣?
我現在的解決方案是將split
這個字符串轉換成一個數組,然後再次加入它的最後兩個成員,但我確信有一個比這更好的解決方案。
我有一個包含路徑的字符串,如是否可以使用正則表達式切斷字符串的開始?
/foo/bar/baz/hello/world/bla.html
現在,我想從倒數第二個/
得到的一切,即結果應該是
/world/bla.html
這是可能使用正則表達式?如果是這樣,怎麼樣?
我現在的解決方案是將split
這個字符串轉換成一個數組,然後再次加入它的最後兩個成員,但我確信有一個比這更好的解決方案。
例如:
> '/foo/bar/baz/hello/world/bla.html'.replace(/.*(\/.*\/.*)/, "$1")
/world/bla.html
可以使用/(\/[^\/]*){2}$/
,其選擇兩次,接着由串的端部的斜線和一些內容。
看到這個regexplained。
> '/foo/bar/baz/hello/world/bla.html'.match(/(?:\/[^/]+){2}$/)[0]
"/world/bla.html"
沒有正則表達式:
> var s = '/foo/bar/baz/hello/world/bla.html';
> s.substr(s.lastIndexOf('/', s.lastIndexOf('/')-1))
"/world/bla.html"
你也可以做
str.split(/(?=\/)/g).slice(-2).join('')
不錯的單線! OP說他已經在使用'split'和'join'了,但我敢打賭他並沒有像這樣使用它們! –
將它永遠是一個固定的 「最後兩個」?或者你總是會忽略「/ foo/bar/baz/hello」部分? –
是使用Regex強制還是隻適用於Regex可以帶來的花哨? – dievardump
'split'和'join'沒有錯,我不知道爲什麼人們總是需要一個正則表達式! – Ian