L'amélioration de la regex pour l'analyse de YouTube / Vimeo Url

J'ai fait une fonction (en JavaScript) qui prend une URL à partir soit sur YouTube ou Vimeo. Il en déduit le fournisseur et l'ID de cette vidéo (démo: 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
    }
}

Cela fonctionne, cependant, comme une regex Novice, je suis à la recherche de moyens de l'améliorer. L'entrée, je fais face à, ressemble généralement à ceci:

http://vimeo.com/(id)
http://youtube.com/watch?v=(id)&blahblahblah.....

1) Droit maintenant, je suis en train de faire trois matches différents, ne serait-il judicieux d'essayer de la faire tout en une seule expression? Si oui, comment?

2) les correspondances existantes à être plus concis? Sont-ils inutilement complexe? ou peut-être insuffisant?

3) existe-il des YouTube ou Vimeo URL qui serait manquer d'être analysée? J'ai essayé un peu et pour l'instant il semble fonctionner assez bien.

Pour résumer: je suis simplement à la recherche de moyens d'améliorer la fonction ci-dessus. Tout conseil est le bienvenu.

OriginalL'auteur Daniel | 2011-04-10