使用Javascript获取url中倒数第二个参数

4
我有一个像这样的URL
http://example.com/param1/param2/param3

请帮助我使用JavaScript获取倒数第二个参数。我已经搜索了,只能找到使用正则表达式找到最后一个参数的方法。我是新手。非常感谢您的帮助。
谢谢。
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];

7

基本字符串操作:

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

3
你可以通过以下方法实现这一点:
document.URL.split("/");

只是另一个答案注释,split返回一个数组,所以他必须获取.length-2项。 - ronnyfm
2
@ronnyfm 你是对的,但我认为答案应该给出方向并迫使你进行实验,而不是复制粘贴。 - Igor S.

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

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


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!!

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"

请注意尾随斜杠的情况,只有//和没有/的情况。在您的代码的更大背景下,确定这些边缘情况是否可接受是您需要确定的事情。请不要验证此答案,从其他答案中选择。

1
var url = "http://example.com/param1/param2/param3";
var split = url.split("/");
alert(split[split.length - 2]);

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

-2是为了确保您始终获取倒数第二个。


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]; 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接