Laravel 5.4 - preg_match():未知修饰符' {'

时间:2018-05-17 07:55:41

标签: php laravel laravel-5 laravel-validation

我尝试使用正则表达式验证名为'name'的输入,验证输入将类似于:2018/2019。 我的代码:

$this->validate($request, [
'name' => 'required|regex:[0-9]{4}/[0-9]{4}'
]);

我遇到此错误:

  

preg_match():未知的修饰符' {'

更新:解决了,我只需要添加     () 这是正确的代码:

$this->validate($request, [
'name' => 'required|regex:([0-9]{4}/[0-9]{4})'
]);

1 个答案:

答案 0 :(得分:0)

当你有验证规则regex:XXX时,会发生什么基本上是Laravel运行:

preg_match(XXX, $fieldValue);

因此,您需要确保您拥有有效的正则表达式,即在您需要的情况下:

$this->validate($request, [
   'name' => 'required|regex:#[0-9]{4}/[0-9]{4}#'
]);

注意我已经使用#所以我不需要逃避正则表达式中的/

所有有效的分隔符正则表达式列表包括, 如上所述in the manual

/foo bar/
#^[^0-9]$#
+php+
%[a-zA-Z0-9_-]%
(this [is] a (pattern))
{this [is] a (pattern)}
[this [is] a (pattern)]
<this [is] a (pattern)>