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

Php Laravel preg_match():未知修饰符';]';,php,regex,laravel,laravel-validation,Php,Regex,Laravel,Laravel Validation,我是拉维4.2的沃克林。我正在尝试使用validator用正则表达式验证名称字段下面是我的规则: public static $rules_save = [ 'name' => 'required|regex:/[XI0-9/]+/|unique:classes' ]; 但一旦我调用要验证的规则,就会抛出一个错误,请参见以下内容: preg_match(): Unknown modifier ']' 在下列地点: protected function validate

我是拉维4.2的沃克林。我正在尝试使用validator用正则表达式验证名称字段下面是我的规则:

public static $rules_save = [
    'name'      => 'required|regex:/[XI0-9/]+/|unique:classes'
];
但一旦我调用要验证的规则,就会抛出一个错误,请参见以下内容:

preg_match(): Unknown modifier ']'
在下列地点:

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

        return preg_match($parameters[0], $value); // **ON THIS LINE**
    }

由于需要在character类中包含
/
,因此需要执行以下操作之一:

'name'      => 'required|regex:/[XI0-9\/]+/|unique:classes'
                                      ^
或者使用其他

使用PCRE函数时,要求图案用分隔符括起来。分隔符可以是任何非字母数字、非反斜杠、非空白字符

常用的分隔符有正斜杠(
/
)、散列符号(
#
)和波浪号(
~

正如第一张海报(Stribizev)所指出的,您需要转义正斜杠
/
,这是因为反斜杠
/
在该模式中用作分隔符。因此,使其在角色类中扮演特殊角色

所以你的模式应该是这样的

/[XI0-9\/]+/
但是,如果使用其他分隔符,例如
#
,则无需转义正斜杠

#[XI0-9/]+#
在这里,我没有跳过正斜杠,因为我使用了
作为分隔符

希望这有帮助


有关更多信息,请查看Stribizev发布的链接。

如果只想匹配
X
I
和数字,只需将
/]
替换为
]
。或者,如果要将
/
包含到字符类中:
\/]
。您的要求是什么?@Stribizev我需要/作为正则表达式的一部分。然后尝试
'name'=>“required”|正则表达式:/[XI0-9\/]+/| unique:classes'
。它是否像预期的那样工作?另外,检查是否仍然不工作。只是好奇:您发布了另一个关于管道的问题,我的答案是否真的有效,或者您是否必须像
public static$rules\u save=['name'=>['required','regex:/[XI0-9\/]+/','unique:classes'],]那样重新安排它