Laravel Regex Match Url与JPG不起作用[重复]

Posted

技术标签:

【中文标题】Laravel Regex Match Url与JPG不起作用[重复]【英文标题】:Laravel Regex Match Url with JPG not working [duplicate] 【发布时间】:2014-10-17 21:21:45 【问题描述】:

我在 http://www.regexr.com/ 匹配 laravel 的正则表达式验证所需的正则表达式。 验证以 jpg/gif/png 文件结尾的 url。

/(http|https):\/\/(www\.)?[\w-_\.]+\.[a-zA-Z]+\/((([\w-_\/]+)\/)?[\w-_\.]+\.(png$|gif$|jpe?g$))/ig 但是当我输入我的代码时,它会抛出一个preg_match(): No ending delimiter '/' found 错误。

这是我的验证规则

$rules  = [
            'title'             => 'required|min:3',
            'description'       => 'required|min:3',
            'url'               => 'required|regex:/(http|https):\/\/(www\.)?[\w-_\.]+\.[a-zA-Z]+\/((([\w-_\/]+)\/)?[\w-_\.]+\.(png$|gif$|jpe?g$))/ig',
          ];

【问题讨论】:

删除 g 修饰符后,您的代码对我来说可以正常工作。 @AvinashRaj ,我仍然遇到错误。我尝试找到相同的情况on stack overflow,但仍然遇到错误,不确定 laravel 正则表达式验证格式/语法如何工作。对它还是陌生的。我红色的文档,nth解释。 在你的正则表达式中使用开始和结束锚点^(http|https):\/\/(www\.)?[\w-_\.]+\.[a-zA-Z]+\/((([\w-_\/]+)\/)?[\w-_\.]+\.(png$|gif$|jpe?g$))$ 使用不同的分隔符比如~ 【参考方案1】:

正如提到的here,Laravel | 分隔符与正则表达式替换 | 冲突。

考虑的正则表达式

required|regex:/(http|https)...

/(http,因此缺少结束分隔符。

似乎你可以通过使用(我冒昧地清理了你的正则表达式中的一些东西)来解决这个问题:

'url' => array('required', 'regex:/(https?):\/\/(www\.)?[\w.-]+\.[a-zA-Z]+\/((([\w\/-]+)\/)?[\w.-]+\.(png|gif|jpe?g)$)/ig')

如果 Laravel 可以使用与 / 不同的分隔符,我还建议使用其他东西(例如 ~)来减轻 \/ 的森林。

【讨论】:

以上是关于Laravel Regex Match Url与JPG不起作用[重复]的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式无法与 C++ regex_match 一起按预期工作

std::regex_match 与字符 é è à

用regex改进URL解释

与 C# 控制台应用程序中的相同代码相比,Regex.Match 在 Unity 中返回不同/错误的结果

Laravel 时间正则表达式

有没有办法让 Regex.Match 只提供预期的捕获组?