【发布时间】:2018-12-02 21:22:01
【问题描述】:
我正在尝试使用 PHP 创建一个正则表达式,它应该匹配直接指向 *.mp4 文件或 YouTube 视频的 URL。
我已经成功创建了一个仅匹配 YouTube 视频的正则表达式和另一个仅匹配直接 *.mp4 文件的正则表达式,现在我想将它们组合起来,但目前失败了。
匹配的要求是它必须匹配带有和不带有 http(s) 和/或 www 的 URL。因此,例如以下链接应该是有效的:
https://www.example.com/files/video.mp4
http://www.example.com/files/video.mp4
https://example.com/files/video.mp4
http://example.com/files/video.mp4
www.example.com/files/video.mp4
www.youtube.com/watch?v=xxxxxx
www.youtu.be/watch?v=xxxxxx
我正在使用 regex101.com 进行测试和解释。目前根据这个测试网站,有些链接是有效的,有些链接是不正确的,其实应该是正确的。
有人可以告诉我my regex 有什么问题吗?
(http(s)?:\/\/|(w){3}).*\.((?:mp4)|).*(youtu(be|.be))?(\.com)?\/.+
【问题讨论】:
-
您列表中的哪些链接与正则表达式不匹配?我在 regex101 上做了一个测试,都很好匹配
-
感谢您的回复。例如,youtu.be 不匹配
-
稍作改动,你的表达就可以正常工作
(http(s)?:\/\/|(w){3}).*\.((?:mp4)|).*(youtu(be|\.be))?(\.com)? -
再次感谢,不幸的是,根据 regex101 这将匹配错误的 *.mp3 文件。