Laravel preg_match():未知的修饰符']'

Arl*_*ind 0 php regex laravel laravel-validation

我在Laravel 4.2上玩耍.我试图使用验证器来验证带有正则表达式的名称字段,这是我的规则如下:

public static $rules_save = [
    'name'      => 'required|regex:/[XI0-9/]+/|unique:classes'
];
Run Code Online (Sandbox Code Playgroud)

但是一旦我调用规则进行验证就会抛出错误,请参见下文:

preg_match(): Unknown modifier ']'
Run Code Online (Sandbox Code Playgroud)

在以下位置:

protected function validateRegex($attribute, $value, $parameters)
    {
        $this->requireParameterCount(1, $parameters, 'regex');

        return preg_match($parameters[0], $value); // **ON THIS LINE**
    }
Run Code Online (Sandbox Code Playgroud)

Wik*_*żew 5

由于你需要/在字符类中包含一个,你需要先解决它:

'name'      => 'required|regex:/[XI0-9\/]+/|unique:classes'
                                      ^
Run Code Online (Sandbox Code Playgroud)

或者使用其他正则表达式分隔符.

使用PCRE功能时,需要使用分隔符包围模式.分隔符可以是任何非字母数字,非反斜杠,非空白字符.

经常使用的分隔符是正斜杠(/),哈希符号(#)和波浪号(~).