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

Laravel表单验证:如何限制输入为9/12/15位数字?

Laravel表单验证:强制输入9/12/15位数字并保证唯一性

你的验证规则出错的核心原因是正则表达式未正确闭合,同时规则的分隔逻辑被混淆。以下是正确的实现方式:

正确的验证规则写法

1. 字符串形式规则

直接编写规则字符串,注意正则要用/完整包裹,不同规则之间用|分隔(所有规则需同时满足):

'id_no' => 'required|regex:/^(\d{9}|\d{12}|\d{15})$/|unique:users,id_no'

2. 数组形式规则(更清晰,推荐)

将每个验证规则拆分为数组元素,避免字符串拼接产生的歧义:

'id_no' => [
    'required',
    'regex:/^(\d{9}|\d{12}|\d{15})$/',
    'unique:users,id_no'
]

规则说明

  • required:强制字段为必填项
  • regex:/^(\d{9}|\d{12}|\d{15})$/:严格匹配仅9位、12位或15位数字(^和$确保输入内容完全符合格式,不会出现多字符或少字符的情况)
  • unique:users,id_no:保证该字段在users表的id_no列中唯一

补充:更新数据时的唯一性处理

如果是更新用户信息,需要排除当前用户的ID,避免验证自身数据时产生冲突:

use Illuminate\Validation\Rule;

// 验证规则
'id_no' => [
    'required',
    'regex:/^(\d{9}|\d{12}|\d{15})$/',
    Rule::unique('users', 'id_no')->ignore($user->id)
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 13:19:53