是否可以使用正则表达式切断字符串的开头?

时间:2013-07-26 13:44:26

标签: javascript regex

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

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

现在,我想从第二个/获得所有内容,即结果应为

/world/bla.html

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

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

5 个答案:

答案 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