Я создал функцию (в 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, которые не будут проанализированы? Я пробовал немало, и до сих пор кажется, что он работает довольно хорошо.
Подводя итог: Я просто ищу способы улучшить вышеуказанную функцию. Любой совет с благодарностью.