正则匹配:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | public function rules(){ // 这里是验证修改不存在唯一型 $id = request( 'id' , 0); return [ 'username' => [ 'required' , 'max:10' , 'min:4' , 'regex:/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{4,10}$/' , Rule::unique( 'shop_manage_user' )->ignore( $id ) ], 'password' => [ 'required' , 'min:6' , 'max:16' ], 'phone' => [ 'required' , 'regex:/^\d{11,}$/' ], 'role_id' => [ 'required' , 'max:5' , 'regex: /^[1-9]\d*$/' ] ]; } public function messages(){ return [ 'username.required' => '用户名称不能为空' , 'username.max' => '用户名称长度不能超过10个字符' , 'username.min' => '用户名称长度不能小于4个字符' , 'username.regex' => '用户名称只能是字母加数字组合' , 'username.unique' => '用户名称已存在~' , 'password.required' => '密码不能为空' , 'password.max' => '密码长度不能超过16个字符' , 'password.min' => '密码长度不能小于6个字符' , 'phone.required' => '手机号不能为空' , 'phone.regex' => '手机号输入不规范' , 'role_id.required' => '角色id不能为空' , 'role_id.max' => '角色id不能超过5位数' , 'role_id.regex' => '角色id只能是整型' ]; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | public function store(Request $request , ImageUploadHandler $uploader ) { $validator = Validator::make( $request ->all(), [ 'username' => 'bail|required|alpha_dash|max:50|unique:admin_users' , 'password' => [ 'bail' , 'required' , 'max:30' , 'min:8' , 'regex: /^(?=.*[0-9].*)(?=.*[A-Z].*)(?=.*[a-z].*)(?=.*[`~!@#$%^&*()_\-+=<>.?:"{}].*)/i' , 'confirmed' ], 'password_confirmation' => [ 'bail' , 'required' , 'max:30' , 'min:8' , 'same:password' , ], 'realname' => 'bail|required|max:20' , 'email' => 'bail|nullable|max:100|email' , 'mobile' => 'bail|nullable|digits:11|unique:admin_users' , 'avatar' => 'nullable' , 'doctor_id' => 'nullable' , 'status' => [ 'bail' , 'required' ], ], [ 'username.required' => '请填写用户名' , 'username.alpha_dash' => '用户必须是英文字母、数字、下划线(_)、破折号(-)' , 'username.max' => '用户名不能大于20个字符' , 'username.unique' => '用户名已被占用,请更换其他用户名' , 'password.required' => '请填写密码' , 'password.max' => '密码长度不能大于30位' , 'password.min' => '密码长度不能小于8位' , 'password.regex' => '密码必须包含大小写字母,数字,特殊字符' , 'password.confirmed' => '两次密码输入不一致,请重新输入' , 'password_confirmation.required' => '请填写确认密码' , 'password_confirmation.max' => '确认密码不能大于30个字符' , 'password_confirmation.confirmed' => '两次密码输入不一致,请重新输入' , 'realname.required' => '请填写姓名' , 'realname.max' => '姓名不能大于20个字符' , 'email.required' => '邮箱不能大于100个字符' , 'email.email' => '邮箱格式不正确' , 'mobile.digits' => '手机号长度不正确' , 'mobile.unique' => '手机号已被占用,请更换其他手机号' , 'status.required' => '请选择账号状态' , ]); if ( $validator ->fails()) { return $this ->fail( $validator ->errors()->first()); } $username = '' ; $pattern = '/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{4,10}$/' ; if (!preg_match( $pattern , $username )){ return $this ->error( '用户名只能是数字加字母组合' ); } } |
成功的秘诀,在永不改变既定的目的~
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现