我制作了一个函数(在 JavaScript 中),它从 YouTube 或 Vimeo 获取 URL。它计算出该特定视频的提供者和 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)现在我正在做三场单独的比赛,尝试在一个表达式中完成所有事情是否有意义?如果是这样,怎么做?
2)现有的匹配可以更简洁吗?它们是否不必要地复杂?或者可能不够?
3) 是否有任何无法解析的 YouTube 或 Vimeo URL?我已经尝试了很多,到目前为止它似乎工作得很好。
总结一下:我只是在寻找改进上述功能的方法。任何意见是极大的赞赏。