我需要通过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/);
我试过了,但它没有用。
谢谢!
答案 0 :(得分:2)
您可以使用这样的简单正则表达式:
id_(\w+)
<强> Working demo 强>
我们的想法是匹配_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)
答案 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所说。