gpt4 book ai didi

php - 正则表达式以匹配Youtube URL

转载 作者:行者123 更新时间:2023-12-03 05:48:11 25 4
gpt4 key购买 nike

我正在尝试使用正则表达式验证YouTube网址:

preg_match('~http://youtube.com/watch\?v=[a-zA-Z0-9-]+~', $videoLink)

虽然可以,但是可以匹配格式错误的URL。例如,这将与ok匹配:
http://www.youtube.com/watch?v=Zu4WXiPRek

但这也是:
http://www.youtube.com/watch?v=Zu4WX£&P!ek

而这不会:
http://www.youtube.com/watch?v=!Zu4WX£&P4ek

我认为这是因为 +运算符。当需要尝试将 v=之后的所有内容与 v=进行匹配时,它将匹配 [a-zA-Z0-9-]之后的第一个字符。任何帮助表示赞赏,谢谢。

最佳答案

问题是您不需要在URL的v =部分中使用任何特定数量的字符。因此,例如,检查

http://www.youtube.com/watch?v=Zu4WX£&P!ek

将匹配
http://www.youtube.com/watch?v=Zu4WX

因此返回true。您需要在v =部分中指定所需的字符数:
preg_match('~http://youtube.com/watch\?v=[a-zA-Z0-9-]{10}~', $videoLink)

或指定组[a-zA-Z0-9-]必须为字符串的最后一部分:
preg_match('~http://youtube.com/watch\?v=[a-zA-Z0-9-]+$~', $videoLink)

你的另一个例子
http://www.youtube.com/watch?v=!Zu4WX£&P4ek

不匹配,因为+号要求至少一个字符必须匹配[a-zA-Z0-9-]。

关于php - 正则表达式以匹配Youtube URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3737634/

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