簡體   English   中英

Laravel正則表達式驗證價格或空

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM