YouTubeまたはVimeoのいずれかからURLを取得する関数を(JavaScriptで)作成しました。その特定のビデオのプロバイダーとIDを把握します(デモ:http://jsfiddle.net/csjwf/)。
function parseVideoURL(url) {
var provider = url.match(/http:\/\/(:?www.)?(\w*)/)[2],
id;
if(provider == "youtube") {
id = url.match(/http:\/\/(?:www.)?(\w*).com\/.*v=(\w*)/)[2];
} else if (provider == "vimeo") {
id = url.match(/http:\/\/(?:www.)?(\w*).com\/(\d*)/)[2];
} else {
throw new Error("parseVideoURL() takes a YouTube or Vimeo URL");
}
return {
provider : provider,
id : id
}
}
それは機能しますが、正規表現の初心者として、私はそれを改善する方法を探しています。私が扱っている入力は、通常、次のようになります。
http://vimeo.com/(id)
http://youtube.com/watch?v=(id)&blahblahblah.....
1)現在、3つの別々の試合を行っていますが、1つの表現ですべてを試してみるのは理にかなっていますか?もしそうなら、どのように?
2)既存の試合はもっと簡潔にできますか?それらは不必要に複雑ですか?またはおそらく不十分ですか?
3)解析に失敗するYouTubeまたはVimeoのURLはありますか?私はかなりの数を試しましたが、これまでのところかなりうまくいくようです。
要約すると、私は単に上記の機能を改善する方法を探しています。アドバイスをいただければ幸いです。