Laravel 11中如何校验0至100的两位小数数值?
Laravel 11 数值范围验证解决方案
规则有效性判断
- 你提供的第二个规则
required|numeric|min:0.01|max:100无效:因为min:0.01会直接拒绝合法的0值,不符合你允许0的需求。 - 第一个规则
['required', 'numeric', 'between:0,100']本身是有效的范围验证规则,但它没有限制小数位数,如果你需要严格限制两位小数,这个规则就不满足完整需求。
符合需求的完整验证规则
要同时实现「0到100范围(含边界)」和「允许两位小数」的校验,需要补充小数位数限制,推荐使用Laravel内置的decimal规则:
数组写法
[ 'required', 'numeric', 'between:0,100', 'decimal:0,2' ]
管道写法
'required|numeric|between:0,100|decimal:0,2'
规则说明
required: 确保字段不为空numeric: 校验字段为数值类型between:0,100: 限制数值在0到100之间(包含0和100)decimal:0,2: 限制小数部分最多2位,同时支持纯整数(如0、100)和带1-2位小数的数值(如0.5、99.99)
常见问题排查
如果之前的规则看似不生效,可能是以下原因:
- 第二个规则的
min:0.01错误排除了0值,导致合法输入被拒绝 - 第一个规则缺少小数位数限制,若测试用例包含超过两位小数的数值(如10.123),虽然在范围内,但不符合小数位数要求,会让你误以为规则失效
内容的提问来源于stack exchange,提问作者Petro Gromovo
相关产品推荐
相关产品推荐

