2

我需要通过正则表达式从 url 获取优酷视频 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

4 回答 4

3

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

id_(\w+)

工作演示

在此处输入图像描述

这个想法是匹配_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
于 2014-09-11T15:34:19.880 回答
1

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

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

您的比赛在第一个捕获组中。

这是一个正则表达式演示

于 2014-09-11T15:23:33.267 回答
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'
于 2014-09-11T16:43:20.413 回答
0

看起来您需要转义所有斜杠,因为这是正则表达式本身的分隔符:

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

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

于 2014-09-11T16:17:36.583 回答