【发布时间】:2014-09-28 17:48:26
【问题描述】:
我已经用我的正则表达式尝试了一切,但我似乎无法适应我的新 URL,它只是不适合我。
请看我的演示:http://jsfiddle.net/693y7/
基本上我需要从每个 url 中提取视频 ID,并确定它是 youtube 还是视频,它确定它的位置就好了,但是 ID 不适用于所有 url。
我没有写这个正则表达式,但是我尝试添加用户、附加或运算符以尝试找到替代结果,但我只是没有得到任何结果,有人介意帮助我更好地了解如何处理新的在演示中不起作用的网址?
网址:
var urls = [
"//player.vimeo.com/video/84687115",
"http://player.vimeo.com/video/25451551",
"http://www.youtube.com/watch?v=0zM3nApSvMg&feature=feedrec_grec_index",
"http://www.youtube.com/user/usernamehere#p/a/u/1/QdK8U-VIH_o",
"http://www.youtube.com/v/0zM3nApSvMg?fs=1&hl=en_US&rel=0",
"http://www.youtube.com/watch?v=0zM3nApSvMg#t=0m10s",
"http://www.youtube.com/embed/0zM3nApSvMg?rel=0",
"http://www.youtube.com/watch?v=0zM3nApSvMg",
"https://youtube.googleapis.com/v/My2FRPA3Gf8",
"http://youtu.be/0zM3nApSvMg",
"http://vimeo.com/84687115",
"http://vimeo.com/channels//84687115",
"http://vimeo.com/groups//videos/84687115"
];
这是我用来匹配 ID 的函数
function parseVideo(url) {
url.match(/(http:|https:|)\/\/(player.|www.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com))\/(video\/|embed\/|watch\?v=|v\/|user\/)?([A-Za-z0-9._%-]*)(\&\S+)?/);
if (RegExp.$3.indexOf('youtu') > -1) {
var type = 'youtube';
} else if (RegExp.$3.indexOf('vimeo') > -1) {
var type = 'vimeo';
}
return {
type: type,
id: RegExp.$6
};
}
我希望这是足够的信息!
【问题讨论】:
-
您需要扩展 url 中间的匹配器以允许“channels//”和“groups//”作为有效值jsfiddle.net/693y7/1
-
谢谢@LJ_1102 除了用户在其中的 url 之外的所有内容(数组中的第 4 个 url)
-
rubular.com 是调试正则表达式的好工具,不仅适用于 ruby 正则表达式
-
我还可以向您介绍一种更简单的方法吗? jsfiddle.net/693y7/2
-
哇@LJ_1102 非常非常简洁优雅!
标签: javascript jquery regex youtube vimeo