Laravel regex validation for price OR empty
我想做一个雷吉士的价格或空。我有实际工作的价格部分(荷兰语用逗号代替点)
1 | /^\d+(,\d{1,2})?$/ |
上面的regex在值21,99上验证OK。
现在我尝试添加空部分,这样字段可以…只是空^ ^ $
1 | /(^$|^\d+(,\d{1,2})?$)/ |
但拉拉维尔开始抱怨,一旦我改变了正则表达式:"方法[验证^d+(,d 1,2)?"$)/]不存在。"
工作OK:
1 2 3 | $rules = [ 'price' => 'regex:/^\d+(,\d{1,2})?$/' ]; |
拉拉维尔说不……
1 2 3 | $rules = [ 'price' => 'regex:/(^$|^\d+(,\d{1,2})?$)/' ]; |
KenKen9990回答-Laravel不再中断,但空值仍然错误:
1 2 3 | $rules = [ 'price' => 'regex:/^(\d+(,\d{1,2})?)?$/' ]; |
这是工作吗?
1 2 3 | $rules = [ 'price' => 'nullable|regex:/^(\d+(,\d{1,2})?)?$/' ]; |
例如,以下内容是有效的:
1 | $rules = ["price" =>"nullable|numeric|between:0,99" ]; |
要使用regex,需要切换到使用数组:
1 2 3 | $rules = [ 'price' => [ 'regex:/(^$|^\d+(,\d{1,2})?$)/' ] ]; |
文件中也指出了这一点:
Note: When using the regex / not_regex patterns, it may be necessary to specify rules in an array instead of using pipe delimiters, especially if the regular expression contains a pipe character.
顺便说一句,最初的规则也可以做你想做的,也可以写成:
1 2 3 | $rules [ 'price' => [ 'nullable', 'numeric', 'between:0,99' ] ] |