我正在使用 Laravel 4.2。我尝试使用 Validator 和正则表达式验证名称字段,以下是我的规则:
public static $rules_save = [
'class_subjects' => 'required|regex:/[0-9]([0-9]|-(?!-))+/'
];
但是一旦我调用需要验证的规则,就会抛出错误,如下所示:
preg_match(): No ending delimiter '/' found
我正在使用 Laravel 4.2。我尝试使用 Validator 和正则表达式验证名称字段,以下是我的规则:
public static $rules_save = [
'class_subjects' => 'required|regex:/[0-9]([0-9]|-(?!-))+/'
];
但是一旦我调用需要验证的规则,就会抛出错误,如下所示:
preg_match(): No ending delimiter '/' found
由于您的正则表达式中有一个管道符,请使用数组:
public static $rules_save = [
'class_subjects' => ['required', 'regex:/[0-9]([0-9]|-(?!-))+/'],
];
文档中指出:
当使用
regex
模式时,如果正则表达式包含管道字符,则可能需要将规则指定为数组,而不是使用管道分隔符。
Laravel 6.x,第二行可以使用带有管道的正则表达式工作,但第一行不行。它验证“公司”表的“参考”字段:a)必填,b)“参考”必须是BV000或A000格式,c)不能重复。
$this->validate($request,[
// 'records.reference' => 'required|regex:/^[A-Z][0-9]{3}$/|unique:companies,reference,'.$request->records['id'],
'records.reference' => ["required","regex:/^(BV|[A-Z]?)[0-9]{3}$/","unique:companies,reference,".$request->records['id']],
]
[
]
即可。 - Ray Coder