0

我有一个包含路径的字符串,例如

/foo/bar/baz/hello/world/bla.html

现在,我想从倒数第二个得到所有东西/,即结果应该是

/world/bla.html

这可以使用正则表达式吗?如果是这样,怎么做?

我目前的解决方案是split将字符串放入一个数组,并再次加入它的最后两个成员,但我确信有比这更好的解决方案。

4

5 回答 5

3

例如:

> '/foo/bar/baz/hello/world/bla.html'.replace(/.*(\/.*\/.*)/, "$1")
/world/bla.html
于 2013-07-26T13:48:02.410 回答
3

你也可以做

str.split(/(?=\/)/g).slice(-2).join('')
于 2013-07-26T13:53:06.040 回答
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"
于 2013-07-26T13:49:16.950 回答
1

我认为这会起作用:

var str = "/foo/bar/baz/hello/world/bla.html";
alert( str.replace( /^.*?(\/[^/]*(?:\/[^/]*)?)$/, "$1") );

这将允许可能只有最后一个部分(例如,“foo/bar”)。

于 2013-07-26T13:48:01.303 回答
1

您可以使用/(\/[^\/]*){2}$/which 选择斜杠和某些内容两次,然后是字符串的末尾。

请参阅此regexplained

于 2013-07-26T13:48:15.707 回答