使用JavaScript提取URL参数

时间:2013-11-09 01:19:44

标签: javascript regex query-string url-parameters

我有一个网址:

http://www.youtube.com/watch?v=JssO4oLBm2s&list=PLGHJ4fVazTpYRZTEhqgurtSH6XlDMIEJM&shuffle=382

编辑:我也不应该将url存储在变量中,我希望它能像这样工作:

$(".videothumb a").live('click', function() {
        var URL = < do something to cut the string > 
        console.log(URL);
        return false;
    });

我想剪切从“=”开始到“&amp;”结束的URL所以我最终得到一个像这样的字符串:“JssO4oLBm2s”。

我只知道slice()函数,但我相信只需要一个数字作为起点和终点。

5 个答案:

答案 0 :(得分:1)

使用.split()将提供基于位置的解决方案,该解决方案将失败参数更改的顺序。相反,我认为您正在寻找的是名为v的参数的值,因为您可以使用简单的正则表达式

'http://www.youtube.com/watch?v=JssO4oLBm2s&list=PLGHJ4fVazTpYRZTEhqgurtSH6XlDMIEJM&shuffle=382'.match('[?&]v=(.*?)(&|$)')[1]

答案 1 :(得分:1)

尝试

'http://www.youtube.com/watch?v=JssO4oLBm2s&list=PLGHJ4fVazTpYRZTEhqgurtSH6XlDMIEJM&shuffle=382'
    .split('=')[1] // 'JssO4oLBm2s&list'
    .split('&')[0] // 'JssO4oLBm2s'

或者,如果您想确保获得v参数,

var v, args = 'http://www.youtube.com/watch?v=JssO4oLBm2s&list=PLGHJ4fVazTpYRZTEhqgurtSH6XlDMIEJM&shuffle=382'.split("?")[1].split('&');
for(var i = args.length-1; i>=0; --i) {
    var data = args[i].split('=');
    if(data[0]==='v') {  v = data[1]; break;  }
}

答案 2 :(得分:0)

使用.split()。为清晰起见,分为2行

var first = "http://www.youtube.com/watch?v=JssO4oLBm2s&list=PLGHJ4fVazTpYRZTEhqgurtSH6XlDMIEJM&shuffle=382".split('=')[1]
var result = first.split('&')[0]; //result - JssO4oLBm2s

答案 3 :(得分:0)

v = 'JssO4oLBm2s&list=PLGHJ4fVazTpYRZTEhqgurtSH6XlDMIEJM&shuffle=382';

var vamploc = v.indexOf("&");

vstring = v.substr(0, vamploc);

您可以稍微使用代码来优化它,但一般概念可以工作。

答案 4 :(得分:0)

使用Regexp (?:v=)(.+?)(?:&|$)

Fiddle DEMO

"http://www.youtube.com/watch?v=JssO4oLBm2s&list=PLGHJ4fVazTpYRZTEhqgurtSH6XlDMIEJM&shuffle=382".match('(?:v=)(.+?)(?:&|$)')[1]

<小时/> 参考

http://gskinner.com/RegExr/