我正在尝试制作一个脚本,使用JavaScript上的RegExp解析YouTube网址,以获取视频ID,如下所示:
function youtube_id_extract(url) {
var youtube_id;
youtube_id = url.replace(/^[^v]+v.(.{11}).*/,"$1");
return youtube_id;
}
但我尝试使用此网址:http://www.youtube.com/watch?v=Hb_IXwcwcjg并且它不会解析。这个RegEx有什么问题?
答案 0 :(得分:4)
工作正常:
> var url = "http://www.youtube.com/watch?v=Hb_IXwcwcjg";
> var youtube_id = url.replace(/^[^v]+v.(.{11}).*/,"$1");
"Hb_IXwcwcjg"
但是你的正则表达式要复杂得多。您可以尝试使用相同的效果(但如果字符串不匹配则失败并显示错误,而不是静默返回相同的字符串):
youtube_id = url.match(/\?v=(.*)/)[1];
答案 1 :(得分:1)
这是来自官方google / youtube文档:
getId : function(url) {
return /https?:\/\/(?:[a-zA_Z]{2,3}.)?(?:youtube\.com\/watch\?)((?:[\w\d\-\_\=]+&(?:amp;)?)*v(?:<[A-Z]+>)?=([0-9a-zA-Z\-\_]+))/i.exec(url)[2];
}