Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 验证url匹配模式正则表达式_Php_Regex_Laravel_Validation - Fatal编程技术网

Php 验证url匹配模式正则表达式

Php 验证url匹配模式正则表达式,php,regex,laravel,validation,Php,Regex,Laravel,Validation,与我的正则表达式匹配的时间一样古老的故事并没有像我在Laravel验证中希望的那样工作 要确保Laravel字段中的任何用户输入都与模式匹配https://player.vimeo.com/external/.hd.mp4?s=&profile_id=&download=1 我喜欢正则表达式: /^https://player\.vimeo\.com/external/[0-9]+\.hd\.mp4\?s=(([+-]?(?=\.\d+)(?:\.?:\.?\d*))(?:[eE]([+-]?\

与我的正则表达式匹配的时间一样古老的故事并没有像我在Laravel验证中希望的那样工作

要确保Laravel字段中的任何用户输入都与模式匹配
https://player.vimeo.com/external/.hd.mp4?s=&profile_id=&download=1

我喜欢正则表达式:

/^https://player\.vimeo\.com/external/[0-9]+\.hd\.mp4\?s=(([+-]?(?=\.\d+)(?:\.?:\.?\d*))(?:[eE]([+-]?\d+)([a-zA-Z]+([+-](?=.\d.\d)(?:\d+)(?:\d+)((?:\d+)(?:(?:\id+):\。\d*))(?:[eE]([+]。\d+)))))下载并下载1$`
但它失败了

预匹配未知修饰符“/”


我哪里出错了?

必须对Regex进行反限制,因为字符串中有/所以不要使用/,但是#


由于正则表达式中有一个管道,因此必须使用数组:

$request->validate([  
    'vimeo_url' => ['required','regex:/(?:http|https)?:?\/?\/?(?:www\.|player\.)?vimeo\.com\/(?:external\/\d+.hd.mp4?)?(?:\?s=\d+\&profile_id=\d+\&download=\d)/'],
]);

如果使用管道字符,则只需在验证规则之前和之后添加[]。

如果这是解决建议,请将此页面作为多年前此页面的副本关闭:
$request->validate([  
    'vimeo_url' => ['required','regex:/(?:http|https)?:?\/?\/?(?:www\.|player\.)?vimeo\.com\/(?:external\/\d+.hd.mp4?)?(?:\?s=\d+\&profile_id=\d+\&download=\d)/'],
]);