2011-01-31 95 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]; 
}