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 一起按预期工作