4

我有一个这样的网址

http://example.com/param1/param2/param3

请帮助我使用javascript获取倒数第二个参数。我搜索并只能找到正则表达式方法来找到最后一个参数。我是新来的。任何帮助将不胜感激。

谢谢。

4

8 回答 8

8
var url = 'http://example.com/param1/param2/param3';
var result= url.split('/');
var Param = result[result.length-2];

演示小提琴:http: //jsfiddle.net/HApnB/

Split() - 根据您提到的分隔符将字符串拆分为字符串数组

在上面,result将是一个包含

result = [http:,,example.com,param1,param2,param3];
于 2013-05-29T06:00:21.830 回答
6

基本字符串操作:

> 'http://example.com/param1/param2/param3'.split('/').slice(-2)[0]
"param2"
于 2013-05-29T06:01:33.807 回答
2
var url='http://example.com/param1/param2/param3';
var arr = url.split('/');
alert(arr[arr.length-2]);

arr[arr.length-2] 将包含值“param2”。倒数第二个值

于 2013-05-29T06:01:44.847 回答
2
var url = "http://example.com/param1/param2/param3";

var params = url.replace(/^http:\/\/,'').split('/'); // beware of the doubleslash

var secondlast = params[params.length-2]; // check for length!!
于 2013-05-29T06:01:59.507 回答
2

您可以通过以下方式做到这一点:

document.URL.split("/");
于 2013-05-29T05:59:03.850 回答
1
var url = "http://example.com/param1/param2/param3";
var split = url.split("/");
alert(split[split.length - 2]);

演示:http: //jsfiddle.net/gE7TW/

-2 是为了确保你总是得到倒数第二个

于 2013-05-29T06:08:11.110 回答
1

我最喜欢的答案是来自@Blender

  'http://example.com/param1/param2/param3'.split('/').slice(-2)[0]

然而,所有答案都受到边缘情况综合症的影响。以下是将上述内容应用于输入字符串的多个变体的结果:

"http://example.com/param1/param2/param3"  ==> "param2"
"http://example.com/param1/param2"  ==> "param1"
"http://example.com/param1/"  ==> "param1"
"http://example.com/param1"  ==> "example.com"
"http://example.com"  ==> ""
"http://"  ==> ""
"http"  ==> "http"

特别注意尾随/的情况,只有//的情况和没有的情况/

这些边缘情况是否可以接受是您需要在代码的更大上下文中确定的。

不要验证此答案,请从其他答案中选择。

于 2013-05-29T06:27:39.960 回答
0

只是另一个替代解决方案:

var a = document.createElement('a');
a.href = 'http://example.com/param1/param2/param3'
var path = a.pathname;

// get array of params in path
var params = path.replace(/^\/+|\/+$/g, '').split('/');

// gets second from last parameter; returns undefined if not array;
var pop = params.slice(-2)[0]; 
于 2015-05-14T04:02:37.053 回答