非必填整数验证求助:输入需在0-100范围,digits_between规则失效
解决非必填0-100整数验证的问题
嘿,我懂你遇到的麻烦了——digits_between:1,2这个规则确实不太适合你的场景,它只允许1到2位的数字,直接把0(1位但起始值是1)和100(3位)都排除在外了。咱们换个更精准的思路来搞定这个非必填的0-100整数验证:
方案1:用数值范围验证(以Laravel为例)
如果是Laravel这类框架的验证,直接组合nullable、integer、min和max规则就行,完美匹配你的需求:
nullable:允许字段为空,满足非必填要求integer:确保输入的是整数类型min:0+max:100:严格限定数值在0到100之间
代码示例:
$request->validate([ 'score' => 'nullable|integer|min:0|max:100', ]);
方案2:自定义逻辑验证(通用场景)
如果是前端或者其他没有现成验证规则的场景,核心逻辑是:先判断字段是否有输入,有输入时再验证是否为整数且在0-100区间内。
比如JavaScript的实现示例:
function validateScoreInput(scoreValue) { // 非必填,空值直接通过验证 if (!scoreValue) return true; const scoreNum = parseInt(scoreValue, 10); // 验证是否为整数,且数值在0-100之间 return Number.isInteger(scoreNum) && scoreNum >= 0 && scoreNum <= 100; }
这个思路的关键是不要用位数限制,而是直接针对数值范围做校验,这样就能完美覆盖0和100这两个边界值啦。
内容的提问来源于stack exchange,提问作者Amir
相关产品推荐
相关产品推荐

