【问题标题】:Regex YouTube shorts url javascript python正则表达式 YouTube 短裤 url javascript python
【发布时间】: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. https://www.youtube.com/watch?v=bjkVUaFhwno

  2. https://youtu.be/BEkxOupf9Zc

  3. https://youtube.com/shorts/UZsysDAUHAY?feature=share

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


【解决方案1】:

您用于第一个模式的正则表达式也将匹配您的短裤网址,只需先检查模式 3。

【讨论】:

    猜你喜欢
    • 2022-10-06
    • 1970-01-01
    • 2021-01-07
    • 2013-10-23
    • 1970-01-01
    • 2011-06-10
    • 2017-08-11
    • 2011-11-09
    相关资源
    最近更新 更多