-1

我有一个网址:

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;
    });

我想剪切从“=”开始并以“&”结尾的 URL,所以我会得到一个这样的字符串:“JssO4oLBm2s”。

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

4

5 回答 5

1

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

'http://www.youtube.com/watch?v=JssO4oLBm2s&list=PLGHJ4fVazTpYRZTEhqgurtSH6XlDMIEJM&shuffle=382'.match('[?&]v=(.*?)(&|$)')[1]
于 2013-11-09T01:22:46.313 回答
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;  }
}
于 2013-11-09T01:23:39.747 回答
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
于 2013-11-09T01:22:09.317 回答
0
v = 'JssO4oLBm2s&list=PLGHJ4fVazTpYRZTEhqgurtSH6XlDMIEJM&shuffle=382';

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

vstring = v.substr(0, vamploc);

您可以稍微修改一下代码来改进它,但一般概念是有效的。

于 2013-11-09T01:32:59.683 回答
0

使用正则表达式(?:v=)(.+?)(?:&|$)

小提琴演示

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


参考

http://gskinner.com/RegExr/

于 2013-11-09T01:48:38.083 回答