我有一个包含路径的字符串,例如
/foo/bar/baz/hello/world/bla.html
现在,我想从第二个/
获得所有内容,即结果应为
/world/bla.html
这是否可以使用正则表达式?如果是这样,怎么样?
我目前的解决方案是将split
字符串转换为数组,并再次加入其最后两个成员,但我确信有一个比这更好的解决方案。
答案 0 :(得分:3)
例如:
> '/foo/bar/baz/hello/world/bla.html'.replace(/.*(\/.*\/.*)/, "$1")
/world/bla.html
答案 1 :(得分:3)
您也可以
str.split(/(?=\/)/g).slice(-2).join('')
答案 2 :(得分:2)
> '/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"
答案 3 :(得分:1)
我认为这会奏效:
var str = "/foo/bar/baz/hello/world/bla.html";
alert( str.replace( /^.*?(\/[^/]*(?:\/[^/]*)?)$/, "$1") );
这将允许可能只有一个最后一部分(例如,“foo / bar”)。
答案 4 :(得分:1)
你可以使用/(\/[^\/]*){2}$/
选择一个斜杠和一些内容两次,然后是字符串的结尾。
请参阅此regexplained。