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
相关产品推荐
相关产品推荐

