【问题标题】:Regex Check Facebook Video URL正则表达式检查 Facebook 视频 URL
【发布时间】:2023-03-05 06:47:01
【问题描述】:

我尝试使用正则表达式检查 facebook 视频网址。

这是有效的 fb 视频 URL 示例:
https://www.facebook.com/video.php?v=100000000000000 (VALID)

这是带有用户名的有效 fb 视频 URL 示例: https://www.facebook.com/{用户名}/videos/100000000000000

注意:{username} 可以包含任何字符串。 例子 : https://www.facebook.com/username1/videos/100000000000000(有效) https://www.facebook.com/username2/videos/100000000000000(有效)

但是如果我用用户名检查 fb 视频 url,我的 reqex 仍然是错误的。
这是我的正则表达式:

^http(s)?://(www\.)?facebook.([a-z]+)/(?!(?:video\.php\?v=\d+|usernameFB/videos/\d+)).*$

你可以运行它: https://regex101.com/r/dF5iP1/6

【问题讨论】:

  • 你想让 {username} 匹配 [/] 吗?
  • 没有。 {username} 是任何字符串。

标签: regex


【解决方案1】:

这对你有用:

^(https?://www\.facebook\.com/(?:video\.php\?v=\d+|.*?/videos/\d+))$

演示

https://regex101.com/r/sC6oR2/3

【讨论】:

【解决方案2】:

2018 年 10 月更新

现有的两个 REGEX 提案都不适合我,而且可见的案例比考虑的案例要多。

这是我的 REGEX 提案

^(?:(?:https?:)?\/\/)?(?:www\.)?facebook\.com\/[a-z\.]+\/videos\/(?:[a-z0-9\.]+\/)?([0-9]+)\/?(?:\?.*)?$

^(?:(?:https?:)?\/\/)?(?:www\.)?facebook\.com\/[a-zA-Z0-9\.]+\/videos\/(?:[a-zA-Z0-9\.]+\/)?([0-9]+)

我忽略了video.php,我认为它已经足够老了,可以放心地忽略它。

匹配:

https://www.facebook.com/aguardos.nocturnos/videos/vb.1614866072064590/1828228624061666/?type=2&theater https://www.facebook.com/aguardos.nocturnos/videos/vb.1614866072064590/1828228624061666?type=2&theater https://www.facebook.com/aguardos.nocturnos/videos/1828228624061666/ https://www.facebook.com/latavernadelssomnis/videos/1609038972452561/?hc_ref=NEWSFEED //www.facebook.com/aguardos.nocturnos/videos/1828228624061666/ https://facebook.com/aguardos.nocturnos/videos/1828228624061666/ http://www.facebook.com/aguardos.nocturnos/videos/1828228624061666/ www.facebook.com/aguardos.nocturnos/videos/18282286240612666/ facebook.com/aguardos.nocturnos/videos/18282286240612666/ https://www.facebook.com/aguardos.nocturnos/videos/1828228624061666 https://www.facebook.com/WEAU13News/videos/588612391555522/UzpfSTEzMzAzMDk4NjM6MTAyMTMxMjMzNDE3ODE0MTI/

我不拥有也没有看过任何视频。我只是在我的 Facebook 订阅源上随机挑选了一些。

群组

  1. 视频 ID。

陷阱

最常见的 Facebook 视频格式之一比我希望的要复杂,并且使用 REGEX 完美匹配每个案例可能会导致查询非常混乱。

https://www.facebook.com/RolandGarros/videos/10155404760334920/FOO(有效)

https://www.facebook.com/RolandGarros/videos/FOO/10155404760334920(有效)

https://www.facebook.com/RolandGarros/videos/10155404760334920/FOO/FOO(无效)

这似乎工作的方式是通过在videos/ 之后的第一或第二部分中检索数值。

https://www.facebook.com/RolandGarros/videos/10155361533554920/1015536153355492134

这个涉及两个有效数值的情况呢?看来第二个会占上风。

出于这个原因,上面的 REGEX 解决方案被软化了1 以仅匹配 Facebook URL 的开头,直到我们正在寻找的视频组。考虑到您的目标可能是提取视频 ID,而不是验证 URL,我认为这是一个有效的权衡。归根结底,您将通过任何一种方式(通过 API 或报废)检查视频以提取视频信息,因为 ID 并不意味着视频存在或它是公开的。

1 不仅软化了,还改进了匹配测试用例格式。

测试

你可以自己轻松测试@Regex101

【讨论】:

  • 更新了 a-z 和 A-Z ^(?:(?:https?:)?\/\/)?(?:www\.)?facebook\.com\/[a-zA-Z0-9\.]+\/videos\/(?:[a-z0-9\.]+\/)?([0-9]+)\/?(?:\?.*)?$
【解决方案3】:

这与佩德罗的有点不同,但效果很好。

^http(?:s)?://(?:www\.)?facebook.(?:[a-z]+)/((?:video\.php\?v=\d+|username\d/videos/\d+)).*$

https://regex101.com/r/nV4rI3/1

【讨论】:

    【解决方案4】:

    最新:

    /(?:https?:\/\/)?(?:www.|web.|m.)?(facebook|fb).(com|watch)\/(?:video.php\?v=\d+|(\S+)|photo.php\?v=\d+|\?v=\d+)|\S+\/videos\/((\S+)\/(\d+)|(\d+))\/?/
    

    【讨论】:

      【解决方案5】:

      这对你有帮助 regexr.com/4tdur

      你可以这样使用

      const myURL =  "https://www.facebook.com/video.php?v=100000000000000";
      const res = /^https?:\/\/www\.facebook\.com.*\/(video(s)?|watch|story)(\.php?|\/).+$/gm.test(myURL);
      console.log(res);
      

      【讨论】:

      • 您能否添加评论以解释这与解析 facebook URL 的问题有何关系?
      • 链接有正则表达式,如果 facebook 视频,则检查 url
      【解决方案6】:

      现在的 Facebook 视频 URL 的格式如下:-

      https://www.facebook.com/NowThisPolitics/videos/968643940204333/ https://www.facebook.com/chandni.nathani2/videos/10158204539960536/UzpfSTEwMDAwMTc3MzU1MjI2NzoyNzMxNDUyMTYzNTkwNTQy/

      另外,由于facebook 可以替换为fb,我创建了这个正则表达式:

      /(?:https?:\/{2})?(?:w{3}\.)?(facebook|fb).com\/.*\/videos\/.*/
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-12
        • 2011-12-19
        • 2022-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-06
        • 1970-01-01
        相关资源
        最近更新 更多