【发布时间】:2021-09-01 00:38:17
【问题描述】:
我正在制作一个板,用户可以在其中发布文字、照片和 YouTube 视频链接 我正在尝试从用户复制和粘贴的不同类型的 YouTube url 生成嵌入 url。 感谢 Stackoverflow 大神们,我几乎明白了,但不是 100%
我的 js 正则表达式用于 ajax 调用 api
const ytRegex = /^(https?\:\/\/)?(www\.)?(youtube\.com|youtu\.?be)\/.+$/
...
let video = $('#post-video').val();
if (ytRegex.test(video)) {
video = $('#post-video').val();
} else {
video = 0;
}
...
我的 python 正则表达式
video_receive = request.form['video_give']
video_id1 = re.findall("(https?\:\/\/)?(www\.)?(youtube\.com)\/.+$", video_receive)
video_id2 = re.findall("(https?\:\/\/)?(www\.)?(youtu\.?be)\/.+$", video_receive)
video_id3 = re.findall("(https?\:\/\/)?(www\.)?(youtube\.com)\/(shorts).+$", video_receive)
if video_id1 :
link = video_receive.split("=")[1]
embed = "https://www.youtube.com/embed/"
video = embed + link
elif video_id2:
link = video_receive.split("/")[3]
embed = "https://www.youtube.com/embed/"
video = embed + link
elif video_id3:
link = video_receive.split("/")[4]
embed = "https://www.youtube.com/embed/"
video = embed + link
else:
video = 1
我的目标是 3 种带有变量 video_id# 的 yt url 示例类型
1 用于 yt 视频和 yt 短裤的桌面共享网址 2 是 yt 视频的移动分享网址 3 是 yt 短裤的移动分享网址
在我的 python 代码中,
if video_id1 & elif video_id2 工作正常,但在我添加 elif video_id3 后出现问题
当我用https://youtube.com/shorts/UZsysDAUHAY?feature=share 测试时
我的代码将https://www.youtube.com/embed/share 存储到数据库中
似乎if video_id1 正在处理video_id3 格式。我假设这是因为测试网址在share 之前有=,而if video_id1 有.split("=") 条件。
当我从测试 url 中删除 ?feature=share 时,由于 ajax 调用错误,我的网页给了我错误(POST...500(INTERNAL SERVER ERROR)),甚至没有提交到 db。但适用于原始测试网址。
请告诉我 yt 短裤网址哪里出错了。
【问题讨论】:
-
你能在 1 之前检查正则表达式 3 吗?正则表达式 1 也将匹配模式 3
-
哦,哇,只需切换变量 3 和 1 的行就可以了。我没有意识到有订单。哇,这么简单,但如果没有你的帮助,我永远不会得到这个,非常感谢。 @Sayse 当您帮助我发表评论时,我如何相信您的回答?
标签: javascript python regex ajax youtube