gpt4 book ai didi

javascript - 修改正则表达式以允许其他 url

转载 作者:行者123 更新时间:2023-11-28 19:40:32 25 4
gpt4 key购买 nike

我已经用我的正则表达式尝试了一切,但我似乎无法适应我的新网址,它对我不起作用。

请看我的演示:http://jsfiddle.net/693y7/

基本上,我需要从每个网址中提取视频 ID,并确定它是 YouTube 还是视频,它可以很好地确定其位置,但该 ID 并不适用于所有网址。

我没有编写这个正则表达式,但是我尝试添加用户、附加或运算符来尝试找到替代结果,但我只是没有得到任何结果,有人介意帮助我更好地理解如何处理新的结果吗?演示中的网址不起作用?

网址:

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

/(http:|https:|)\/\/(player.|www.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com))\/(video\/|embed\/|watch\?v=|v\/|user\/|channels\/\/|groups\/\/videos\/)?([A-Za-z0-9._%-]*)(\&\S+)?/

正如您所指出的,这对于示例中的第四个 URL 仍然不起作用。要也支持此网址,您需要添加一个与“a/u/1”或正则表达式匹配的附加匹配组

(\/a\/u\/\d)?

正如我在评论中指出的那样,使用非正则表达式方法可能会更简单,假设视频 ID 始终位于 url 的末尾,仅后跟一些元参数,可以使用以下方法 http://jsfiddle.net/693y7/2/

var sres = url.split("/");
var dirtyid = sres[sres.length-1];
return dirtyid.replace("watch?v=", "").split(/&|#|\?/)[0];

这种方法只是用斜杠分割 url,然后获取包含 videoid 和元参数的最后一部分,并使用一些简单的替换和分割操作来获取所需的视频 id。

虽然这种方法可能不是最干净的,但它很容易针对新用例、url 类型进行扩展和调整,并且可能比如此大的正则表达式更强大。

要获取服务类型,只需对“youtu”和/或“vimeo”进行索引检查即可。

关于javascript - 修改正则表达式以允许其他 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25149431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com