2012-02-14 93 views
0

我不使用正則表達式真的很好,所以我希望有人能幫助想出的東西,將適合我想要做的,那就是:對某些網站的Javascript正則表達式匹配只有

我希望它在下列情況下匹配(僅適用於YouTube的鏈接):

http://www.youtube.com/watch?v=oHg5SJYRHA0
www.youtube.com/watch?v=oHg5SJYRHA0
youtube.com/watch?v=oHg5SJYRHA0
http://youtu.be/oHg5SJYRHA0
www.youtu.be/oHg5SJYRHA0
youtu.be/oHg5SJYRHA0

也前三的例子,它應該與任何域的結局,所以不只是.COM

當我問這個問題,我還需要能夠得到視頻ID也是如此。

回答

2

你可以做到以下幾點:

function getYoutubeId(str) { 
    var check; 
    check = /youtu.be\/(\w+)/.exec(str); 
    if(check) return check[1]; 
    check = /youtube\.com\/.*v=(\w+)/.exec(str); 
    if(check) return check[1]; 
    return null; 
} 

getYoutubeId("http://www.youtube.com/watch?v=oHg5SJYRHA0"); // oHg5SJYRHA0 
getYoutubeId("www.youtube.com/watch?v=oHg5SJYRHA0"); // oHg5SJYRHA0 
getYoutubeId("youtube.com/watch?v=oHg5SJYRHA0"); // oHg5SJYRHA0 
getYoutubeId("http://youtu.be/oHg5SJYRHA0"); // oHg5SJYRHA0 
getYoutubeId("www.youtu.be/oHg5SJYRHA0"); // oHg5SJYRHA0 
getYoutubeId("youtu.be/oHg5SJYRHA0"); // oHg5SJYRHA0 

getYoutubeId(""); // null 
getYoutubeId("google.com"); // null 
getYoutubeId("youtu.be/"); // null 
getYoutubeId("youtube.com/?other=something"); // null 
+0

從來沒有想過做他們那樣的,這是完美的,謝謝。 – 2012-02-14 23:53:20

1

這應該做的伎倆:

(?:http://)?(?:www\.)?youtu(?:\.be|be.com)/(?:watch\?v=)?([\d\w]+) 

捕獲的第一組中的視頻ID。你可以在這裏測試它:http://www.regexr.com