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

时间:2015-09-27 11:41:52

标签: php regex laravel laravel-validation

我喜欢Laravel 4.2。我试图使用验证器来验证带有正则表达式的名称字段,这是我的规则:

type SortList interface{}

但是,只要我调用规则进行验证,就会抛出错误,请参阅下文:

public static $rules_save = [
    'name'      => 'required|regex:/[XI0-9/]+/|unique:classes'
];

在以下位置:

preg_match(): Unknown modifier ']'

2 个答案:

答案 0 :(得分:5)

由于您需要在字符类中包含/,因此您需要先了解它:

'name'      => 'required|regex:/[XI0-9\/]+/|unique:classes'
                                      ^

或使用其他regex delimiters

  

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

     

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

答案 1 :(得分:1)

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

因此你的模式应该是这样的

/[XI0-9\/]+/

但是如果你使用其他分隔符,例如#,那么就没有必要逃避正斜杠。

#[XI0-9/]+#

在这里,我没有逃避正斜杠,因为我使用#作为分隔符

希望这有帮助。

有关详细信息,请查看stribizhev发布的链接。