Laravel 正则表达式验证错误

Posted

技术标签:

【中文标题】Laravel 正则表达式验证错误【英文标题】:Laravel Regex Validation Error 【发布时间】:2017-10-16 11:20:16 【问题描述】:

我在 Laravel 中使用正则表达式验证。但是会发生错误。我想控制,它是图像还是不是。图片扩展名可以是 .jpg、.png 或仅 .jp2。这是我的实现:

protected $rules = [
      'preview_path'  => 'required|regex:[^.*\.(jpg|png)$]',
      'slide_path'    => 'required|regex:[^.*\.(jp2)$]'
];

错误:

preg_match(): 没有找到结束匹配分隔符']'

编辑

我没有发送文件,我只是将字符串路径作为 json 发送。所以我不能使用 mime 类型验证。

【问题讨论】:

你为什么不使用mimes呢? 'preview_path' => 'required|mimes:jpg,png' 'slide_path'=>'required|mimes:jp2' @Rodrane 它是 REST API 部分,我将路径作为 json(字符串)而不是文件发送。哑剧不起作用。 你没有清楚地问你的问题,那么显然它们不是图像 检查我的答案 【参考方案1】:

这个应该可以的

protected $rules = [ 
    'preview_path' => ['required|regex:/^.*\.(jpg|png)$/'], 
    'slide_path' => ['required|regex:/^.*\.(jp2)$/'] 
];

【讨论】:

【参考方案2】:

您可以使用它进行比正则表达式更好的扩展验证 https://laravel.com/docs/5.4/validation#rule-mimes

【讨论】:

以上是关于Laravel 正则表达式验证错误的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 中正则表达式规则的自定义验证消息?

Laravel - 使用正则表达式仅验证字母、数字和空格

Laravel 验证正则表达式,视图中断

Laravel 验证仅在字段不为空时验证正则表达式

工作正则表达式在 laravel 验证中不起作用

laravel 正则表达式验证不起作用