Laravel中如何实现仅允许整数、浮点数值输入的验证规则
解决方案
你现有验证规则首先存在min:1的配置问题,和你给出的可接受取值0.5冲突,调整最小值后如果还是无法通过浮点数校验,可以选择以下两种方案修改:
方案一:正则规则适配(兼容所有Laravel版本)
通过正则明确匹配整数和浮点数格式,代码如下:
$this->validate($request, [ 'days' => 'required|regex:/^\d+(\.\d{1,2})?$/|min:0.5|max:50', ]);
规则说明:正则/^\d+(\.\d{1,2})?$/会匹配整数(如1、2)以及最多带2位小数的浮点数(如0.5、2.5),如果需要支持更多小数位,修改正则中\d{1,2}的第二位数字即可,比如\d{1,3}就是支持最多3位小数。
方案二:decimal规则(仅支持Laravel 9及以上版本)
用Laravel官方提供的decimal规则实现,写法更简洁:
$this->validate($request, [ 'days' => 'required|numeric|decimal:0,2|min:0.5|max:50', ]);
规则说明:decimal:0,2表示允许的数值小数位数在0到2位之间,刚好覆盖整数和最多两位小数的浮点数场景。
如果调整规则后还是出现校验失败的情况,建议先检查前端提交的days参数是否携带了多余的非数字字符(比如空格、千位分隔符、货币符号等),可以先对请求参数做清洗后再走校验逻辑。
内容的提问来源于stack exchange,提问作者user3653474
相关产品推荐
相关产品推荐

