You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel验证digits规则问题:如何设置价格仅允许8或13位数字?

问题修复方案

嘿,这个问题我之前也踩过坑!核心原因是你用错了Laravel的验证规则,咱们一步步来解决:

1. 为什么原规则不生效?

Laravel的digits规则是用来指定固定长度的数字,它只接受单个整数参数(比如digits:8表示必须是8位数字)。当你写digits:8,13时,框架并不会把它解析成“8位或13位”,反而会把最后一个参数当成目标长度,所以输入8位时会提示需要13位数字,完全不符合你的预期。

2. 分两种场景修复

场景A:允许8到13位之间的所有数字(包括9/10/11/12位)

用digits_between规则,它专门用于指定数字长度的范围:

'price' => 'required|numeric|digits_between:8,13'

场景B:仅允许严格的8位或者13位数字(不接受中间长度)

如果你的需求是只能是这两个长度,那需要用正则表达式规则regex来精确匹配:

'price' => 'required|numeric|regex:/^\d{8}$|^\d{13}$/'

这个正则的意思是:要么是正好8位数字,要么是正好13位数字。

验证提示优化(可选)

如果你想给用户更清晰的提示,可以自定义错误消息,比如在验证规则里补充:

'price' => [
    'required' => '价格不能为空',
    'numeric' => '价格必须是数字',
    'regex' => '价格必须是8位或13位数字',
]

内容的提问来源于stack exchange,提问作者Dronax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:28:37