2012-02-14 10 views
0

私は正規表現で本当に良いではないので、私がある、誰かが私が何をしようとしている合う何かを思い付く助けることができる願っています:Javascriptの正規表現のマッチのみ

私はそれが(のみユーチューブリンク用)以下の場合に一致させたい:

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だけでも

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

最初のキャプチャグループは動画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

そのようにそれらをやって考えることはありません、それは、感謝最適です。 –