如何通过正则表达式从url获取youku视频ID?

时间:2014-09-11 15:20:31

标签: javascript jquery regex youku

我需要通过regex从url获取youku视频ID,例如:

http://v.youku.com/v_show/id_XNTg3OTc3MzY4.html

我只需要XNTg3OTc3MzY4来保留变量。

如何在下面的函数中编写

var youkuEmbed = "[[*supplier-video]]";

var youkuUrl = youkuEmbed.match(/http://v\.youku\.com/v_show/id_(\w+)\.html/);

我试过了,但它没有用。

谢谢!

4 个答案:

答案 0 :(得分:2)

您可以使用这样的简单正则表达式:

id_(\w+)

<强> Working demo

enter image description here

我们的想法是匹配_id并捕获所有字母数字字符串。

MATCH 1
1.  [29-42] `XNTg3OTc3MzY4`

如果你去代码生成器部分,你可以获得代码。但是,您可以使用以下内容:

var myString = 'http://v.youku.com/v_show/id_XNTg3OTc3MzY4.html';
var myRegexp = /id_(\w+)/;
var match = myRegexp.exec(myString);
alert(match[1]);  
//Shows: XNTg3OTc3MzY4

答案 1 :(得分:1)

您可以使用此正则表达式:

http://v\.youku\.com/v_show/id_(\w+)\.html

您的比赛是在第一个捕捉组。

这是regex demo

答案 2 :(得分:1)

我的ID始终跟在id_之后,你可能会拆分字符串。

'http://v.youku.com/v_show/id_XNTg3OTc3MzY4.html'.split(/.*id_|\./)[1]
//=> 'XNTg3OTc3MzY4'

对于这个特定的字符串,你可以这样做。

'http://youku.com/id_XNTg30Tc3MzY4.html'.split(/id_|\./)[2]
//=> 'XNTg3OTc3MzY4'

答案 3 :(得分:0)

看起来你需要逃避所有斜杠,因为它是正则表达式本身的分隔符:

var youkuUrl = youkuEmbed.match(/http:\/\/v\.youku\.com\/v_show\/id_(\w+)\.html/);

然后使用第一个捕获组,如Unihedron所说。