我有一个包含路径的字符串,例如
/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
你也可以做
str.split(/(?=\/)/g).slice(-2).join('')
> '/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"
我认为这会起作用:
var str = "/foo/bar/baz/hello/world/bla.html";
alert( str.replace( /^.*?(\/[^/]*(?:\/[^/]*)?)$/, "$1") );
这将允许可能只有最后一个部分(例如,“foo/bar”)。
您可以使用/(\/[^\/]*){2}$/
which 选择斜杠和某些内容两次,然后是字符串的末尾。
请参阅此regexplained。