2011-01-31 103 views
1

我试图让一个脚本,将使用JavaScript的正则表达式来获取视频ID解析YouTube网址,例如:JavaScript就无法解析YouTube网址

function youtube_id_extract(url) { 
    var youtube_id; 
    youtube_id = url.replace(/^[^v]+v.(.{11}).*/,"$1"); 

    return youtube_id; 
} 

但我已经试过与此URL:http://www.youtube.com/watch?v=Hb_IXwcwcjg,它不会解析。这个RegEx有什么问题?

+2

它的工作原理... HTTP://jsfiddle.net/WnRzs/ – Andrew 2011-01-31 20:59:48

回答

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]; 
+0

我用这一个,如果功能,我从这里得到:http://stackoverflow.com/questions/ 4855666/4855691#4855691 – Brian 2011-01-31 21:00:45

1

这是从谷歌官方/ 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]; 
}