我正试图为价格制作一个正则表达式或为空。 我有实际起作用的价格部分(荷兰使用逗号而不是点)
/^\d+(,\d{1,2})?$/
上面的正则表达式可以对值21,99进行确认
现在我尝试添加空部分,以便该字段可以...只是空^ $
/(^$|^\d+(,\d{1,2})?$)/
但是,一旦我更改了正则表达式,Laravel就开始抱怨: “方法[validate ^ \ d +(,\ d {1,2})?$)/]不存在。”
工作正常:
$rules = [
'price' => 'regex:/^\d+(,\d{1,2})?$/'
];
Laravel拒绝...:
$rules = [
'price' => 'regex:/(^$|^\d+(,\d{1,2})?$)/'
];
Kenken9990答案-Laravel不再中断,但空值仍然是错误的:
$rules = [
'price' => 'regex:/^(\d+(,\d{1,2})?)?$/'
];
答案 0 :(得分:7)
这工作吗?
$rules = [
'price' => 'nullable|regex:/^(\d+(,\d{1,2})?)?$/'
];
答案 1 :(得分:2)
|
还是多个验证规则的分隔符。
例如,以下内容有效:
$rules = [ "price" => "nullable|numeric|between:0,99" ];
要使用正则表达式,您需要切换到使用数组:
$rules = [
'price' => [ 'regex:/(^$|^\d+(,\d{1,2})?$)/' ]
];
documentation中也指出了这一点:
注意:使用regex / not_regex模式时,可能需要在数组中指定规则而不是使用管道定界符,尤其是在正则表达式包含管道字符的情况下。
顺便说一句,原始规则也可能会做您想要的事情,也可以写为:
$rules [
'price' => [ 'nullable', 'numeric', 'between:0,99' ]
]