[英]Laravel regex validation for price OR empty
我試圖為價格制作正則表達式或空。 我有價格部分(荷蘭語使用逗號而不是點數)實際上有效
/^\d+(,\d{1,2})?$/
上面的正則表達式在值21,99上驗證了ok
現在我嘗試添加空部分,以便字段可以......只是空^ $
/(^$|^\d+(,\d{1,2})?$)/
但是當我改變正則表達式時,Laravel開始抱怨:“方法[驗證^ \\ 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})?)?$/'
];
這是工作嗎?
$rules = [
'price' => 'nullable|regex:/^(\d+(,\d{1,2})?)?$/'
];
|
也是多個驗證規則的分隔符。
例如,以下內容有效:
$rules = [ "price" => "nullable|numeric|between:0,99" ];
要使用它正則表達式,您需要切換到使用數組:
$rules = [
'price' => [ 'regex:/(^$|^\d+(,\d{1,2})?$)/' ]
];
這也在文檔中指出:
注意:使用regex / not_regex模式時,可能需要在數組中指定規則而不是使用管道分隔符,尤其是在正則表達式包含管道符的情況下。
順便提一下,原始規則也可以做你想要的,也可以寫成:
$rules [
'price' => [ 'nullable', 'numeric', 'between:0,99' ]
]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.