十六进制代码验证在Laravel中不起作用

时间:2018-11-30 06:35:14

标签: regex laravel validation rules

我要验证颜色输入字段。我想使用正则表达式模式检查输入值是否为十六进制颜色。

'icon_color' => 'required|regex:^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$',

这是我制定的规则,但是会出现以下错误。

  

preg_match():未找到定界符'/'

有人可以告诉我我在做什么错。建议表示赞赏。

2 个答案:

答案 0 :(得分:2)

这个:icon_color' => 'required|regex:^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$',需要变成这个:'icon_color' => 'required|regex:/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/'

正则表达式本身需要用反斜杠(/)包围,类似于Javascript将字符串视为正则表达式的方式。

答案 1 :(得分:1)

  

使用regex / not_regex模式时,可能有必要   在数组中指定规则,而不是使用管道定界符,尤其是   如果正则表达式包含竖线字符。见   docs

所以,尝试:

'icon_color' => ['required', 'regex:/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/']