在网址末尾的字符之间提取字符串

时间:2015-10-29 14:36:49

标签: javascript

我有以下示例网址:http://example.com/this/is/the/end/

我需要在最后两个/

之间提取最后一段网址

最后/之后可能会有字符,但它总是在我需要的最后两个/之间。

这就是我正在尝试的,我认为它非常接近,但它只返回结束 d

如何提取完整的结尾

的Javascript

var str = 'http://example.com/this/is/the/end/';

var string = str.substring(str.lastIndexOf("/")-1,str.lastIndexOf("/"));

Here's a fiddle

3 个答案:

答案 0 :(得分:4)

使用lastIndexOf 从索引开始作为第二个参数来提取两个斜杠之间的文本。

var str = 'http://example.com/this/is/the/end/';

var lastIndex = str.lastIndexOf('/');
var string = str.substring(str.lastIndexOf("/", lastIndex - 1) + 1, lastIndex);
//                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ : Get the last `/` index by starting search from `lastIndex - 1` index.

console.log(string);

您还可以使用字符串和数组函数,如下所示。

var str = 'http://example.com/this/is/the/end/';

var string = str.split('/').slice(-2)[0];

console.log(string);

此外,可以使用正则表达式。

Regex Demo and Explanation

var str = 'http://example.com/this/is/the/end/';

var string = str.match(/\/(\w+)\/[^\/]*?$/)[1];

console.log(string);

答案 1 :(得分:3)

这是使用正则表达式的好地方:

Regex Live Demo

var str = 'http://example.com/this/is/the/end/';
var re = /\/([^\/]*)\/[^\/]*$/;
//        \/  - look for /
//          ([^\/]*) - capture zero or more characters that aren't a /
//                  \/ - look for last /
//                    [^\/]* - look for more chars that aren't /
//                          $ - match the end of the string
var last = re.exec(str)[1];
console.log(last); //end

答案 2 :(得分:2)

您可以简单地拆分和切片

'http://example.com/this/is/the/end/'.split('/').slice(-2)[0]