Я создал функцию (в JavaScript), которая получает URL-адрес от YouTube или Vimeo. Он определяет провайдера и идентификатор для этого конкретного видео (демо: 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) Сейчас я делаю три отдельных матча, было бы целесообразно попробовать все сделать в одном выражении? Если да, то как?
2) Могут ли существующие совпадения быть более краткими? Являются ли они излишне сложными? или, возможно, недостаточно?
3) Есть ли какой-либо URL-адрес YouTube или Vimeo, который не может быть проанализирован? Я пробовал довольно много, и пока это работает очень хорошо.
Подводя итог: Я просто ищу способы улучшить вышеупомянутую функцию. Любые советы приветствуются.