php Laravel5.5 表单验证常用的验证规则,以及示例
namespace App\Http\Controllers; use App\Models\Users;
use Illuminate\Support\Facades\Validator;
use Symfony\Component\HttpFoundation\Request; class UsersController extends Controller{ // 添加用户post数据验证
public function create(Request $request){
if($request->isMethod('POST')){
$data=$request->input('users');
// 1.控制器的验证演示 Controller中 use ValidatesRequests 就可以直接调用;
// blade中HTML中form表单中name的传值演示 <input name="users[u_mobile]" placeholder="请输入" class="layui-input" type="text">
// <input name="u_gender" value="1" type="radio"><input name="u_gender" value="2" type="radio">
$this->validate($request,[ // 以下正则验证都是自己随意编写的并没有严格去验证,如需要严格的请自行编写或百度,#此处只为重点讲Laravel可用验证用法
//required必须输入 unique 唯一(在users表中u_mobile[手机号]为唯一,不允许重复,regex表达式验证) 此处要用多个条件验证和regex正则建议采用[]形式中间用逗号分隔
'users.u_mobile'=>['required','unique:users','regex:/^1[3|4|5|7|8][0-9]{9}$/'], // 如果是一维数组直接'u_mobile'就可以了;
// 编辑过程中验证唯一示例如:'users.u_mobile'=>['required',Rule::unique('users')->ignore($user->id),'regex:/^1[3|4|5|7|8][0-9]{9}$/'],
// $user为查出的用户对象,ignore是为了强迫Unique规则忽略指定ID($user->id)再进行判断唯一,如果不是在控制器中使用validate验证你可以采用request('id')来获取指定id,request为一个辅助函数很实用
'users.u_qq'=>['required','regex:/^[1-9][0-9]{4,}$/'], // QQ号 还可采用简写 'users.u_qq' => 'required|regex:/^[1-9][0-9]{4,}$/',
'users.u_email'=>['required','unique:users','regex:/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/'], // 大概的邮箱验证
'u_gender'=>'required|in:1,2', // in 的用法用户性别只能输入1和2(男/女) 此处采用中划线的形式验证 如果文字也可以设置为 'required|in:男,女'
'users.u_nickname'=>['required','regex:/^[_\w\d\x{4e00}-\x{9fa5}]{3,20}$/iu'], // 随意写的用户名验证
/*****以下开始重点演示可用的验证用法,有些命名属性和users几乎无什么关联了,重点看验证规则写法,其它的并不重要****/
'salary' => 'required|integer|min:1000', // 工资 integer必须为整数,但是数字必须不能超过2147483647否则它将判断为“不是整数”, min最小值为1000
// nullable 允许输入为空, required_if如果用户性别选择了为1那么input中属性name="name"输入框就必须要填写
'users.name' => 'nullable|required_if:u_gender,1|string|between:1,10', // between 之间(包括1和10) 姓名必须在字数1位和10位之间
'tel'=>['nullable','regex:/^((0\d{2,3}-?)?\d{7,8})|(1[3-9]\d{9})$/'], // 联系电话(座机号和手机号都可以),输入可以为空,但有输入值时就必须按照正则验证
'users.id_no' =>['required','regex:/(^\d{17}[0-9xX]{1}$)|(^\d{14}[0-9xX]{1}$)/'], // 身份证号码验证(包括15位的验证)
'users.age' => ['nullable', 'integer', 'regex:/^[1-9][0-9]?$/'], //年龄 也可以尝试中划线形式:'nullable|integer|regex:/^[1-9][0-9]?$/'
// 余额 numeric必须为数字,max最大值为922337203685477 但是max设置为9223372036854771 但用户输入9223372036854772、9223372036854773 也可以验证通过
// max设置为9223372036854775807 但输入 9223372036854775808、9223372036854775809 还是会通过 所以max还有些缺陷请谨慎使用!
// 同样的问题在 between用于数字类型的精确的范围之间验证也会出现问题,如:between:1,9223372036854771 输入9223372036854773 也会通过,也需要注意!!!
'balance' => 'nullable|numeric|min:1|max:922337203685477', //max如果是数字类型,最大为922337203685477内能精确验证,超过了可能出现问题.
//html模版如: 互联网<input type="checkbox" name="industry_nos[]" value="1"> 建筑<input type="checkbox" name="industry_nos[]" value="2">
'industry_nos' =>'required|array', // 行业 array 验证的字段必须是一个php数组
'industry_nos.*' =>'integer|distinct|between:1,6', // 整数必须在1和6之间 distinct 指定的字段不能有任何重复值
'telephone' => ['required_without:id_no', 'regex:/^1[3-9]\d{9}$/'], // 手机号 required_without 只要id_no字段不存在,telephone那么就必须存在且不能为空
'id_no' => ['required_without:telephone', 'regex:/(^\d{17}[0-9xX]{1}$)|(^\d{14}[0-9xX]{1}$)/'], // 身份证号码 只要telephone不存在,那么id_no就必须存在不能为空
//html模版如: 密码二次确认 <input type="password" name="password" /> <input type="password" name="password_confirmation" />
'password'=>'required|min:6|confirmed', // confirmed 验证的字段必须和password_confirmation 保持一样否则就会验证不成功
'password_confirmation' => 'required|min:6', // password_confirmation会验证和confirmed一致
'pics' =>'required|json|not_in:[]', // json必须为有效的json字符串,not_in不能为包含给定的值[]
'birthday'=>'nullable|date', // 验证的字段值必须是通过PHP函数strtotime校验的有效日期
'start_date' => 'nullable|date_format:Y-m-d', //开始时间 date_format 验证的字段必须与给定的时间格式相匹配
'amount' => ['required','numeric','regex:/^\d{1,14}$/'], // 正则允许的最大为: 99999999999999,超过即为不合法
//msyql bigint带符号的最大值为9223372036854775807,但php中如果位数超过14将采用科学计数法如果采用max不太合适,所以先默认使用上面的正则验证方法
],[
'required'=>':attribute为必填项',//:attribute 字段占位符表示字段名称
'regex'=>':attribute格式不正确',
'unique'=>':attribute已经存在',
'integer'=>':attribute必须为整数',
'min'=>':attribute不能小于6位',
'email'=>':attribute格式不正确',
'in'=>':attribute必须选择',
'max'=>':attribute大于了10位',
// 此处开始省略..就不再继续编写了,写法同上面都差不多,自行编写即可
],[
'users.u_mobile'=>'手机号码', //指定字段名称
'users.u_qq'=>'QQ号码',
'users.u_email'=>'联系邮箱',
'u_gender'=>'用户性别',
'users.u_nickname'=>'用户昵称',
// 此处开始省略..就不再继续编写了,写法同上面都差不多,自行编写即可
]);
// 2. validator类验证演示---------------
/*$validator=Validator::make($request->input(),[
'users.u_mobile'=>['required','unique:users','regex:/^1[3|4|5|7|8][0-9]{9}$/'],//如果是一维数组直接'u_mobile'就可以了;
'users.u_qq'=>['required','regex:/^[1-9][0-9]{4,}$/'],
'users.u_email'=>'required|unique:users|email',
'users.u_gender'=>'required|in:0,1,2',
'users.u_nickname'=>['required','regex:/^[_\w\d\x{4e00}-\x{9fa5}]{3,20}$/iu'],
],[
'required'=>':attribute为必填项',//:attribute 字段占位符表示字段名称
'regex'=>':attribute格式不正确',
'unique'=>':attribute已经存在',
'integer'=>':attribute必须为整数',
'min'=>':attribute不能小于6位',
'email'=>':attribute格式不正确',
'in'=>':attribute必须选择',
'max'=>':attribute大于了10位',
],[
'users.u_mobile'=>'手机号码', //指定字段名称
'users.u_qq'=>'QQ号码',
'users.u_email'=>'联系邮箱',
'users.u_gender'=>'用户性别',
'users.u_nickname'=>'用户昵称',
]); if($validator->fails()){
abort(422, $validator->errors()->first());
}*/
} } }
如果需要参考框架中验证类的源码可以进入 \vendor\laravel\framework\src\Illuminate\Validation\Concerns\ValidatesAttributes.php 文件中进行详细查看流程和调试,可以多研究一下
php Laravel5.5 表单验证常用的验证规则,以及示例的更多相关文章
- laravel5.7 表单验证
laravel5.7 表单验证 一.创建表单请求 1.找到 larave5.7 文档 验证 中的创建表单请求,这里就要用到命令:php artisan make:request BrandReques ...
- 自制“低奢内”CSS3注册表单,包含JS验证哦。请别嫌弃,好吗?。
要求 必备知识 基本了解CSS语法,初步了解CSS3语法知识.和JS/JQuery基本语法. 开发环境 Adobe Dreamweaver CS6 演示地址 演示地址 预览截图(抬抬你的鼠标就可以看到 ...
- EasyUI中在表单提交之前进行验证
使用EasyUi我们可以在客户端表单提交之前进行验证,过程如下:只需在onSubmit的时候使用return $("#form1").form('validate')方法即可,E ...
- Ajax实现提交表单时验证码自动验证(原创自Zjmainstay)
本文通过源码展示如何实现表单提交前,验证码先检测正确性,不正确则不提交表单,更新验证码. 1.前端代码 index.html <!DOCTYPE html> <html> &l ...
- AngularJS 表单提交后显示验证信息与失焦后显示验证信息
虽然说AngularJS的实时表单验证非常有用,非常高效方便,但是当用户还没有完成输入时便弹出一个错误提示,这种体验是非常糟糕的. 正常的表单验证逻辑应该是在用户提交表单后或完成当前字段中的输入后,再 ...
- Form表单提交,js验证
Form表单提交,js验证 1, Onclick() 2, Onsubmit() Button标签 input (属性 submit button )标签 Input type=button ...
- Flask基础(16)-->WTForms表单创建和简单验证
Flask基础(16)-->WTForms表单创建和简单验证 前言:使用Flask_WTF需要配置参数SECRET_KEYCSRF_ENABLED是为了CSRF(跨站请求伪造)保护.SECRET ...
- 修改layui的表单手机、邮箱验证可以为空怎么实现?
修改layui的表单手机.邮箱验证可以为空 解决办法: 修改源码: 把表单验证源代码(form.js)的正则表达式改一下,例如手机的正则为:/^1d{10}$/,可以改成/^$|^1d{10} ...
- WEB安全讨论-表单登录是先验证验证码还是密码
表单登录是先验证验证码还是密码? 肯定是验证码呀!!!这是毋庸置疑的.但是发现有人会验证密码,感觉先验证密码和先验证验证码是一个概念是一样的.但是其实是完全不一样的.下面我们来一起详细的剖析一下: 消 ...
- Laravel5.1 表单验证
当我们提交表单时 通常会对提交过来的数据进行一些验证.Laravel在Controller类中使用了一个traint:ValidatesRequest.方便我们在控制器中使用验证器. 下面我们就来看一 ...
随机推荐
- SharePoint 2013 - Workflow Manager
1. Workflow Manager可以与SharePoint 安装在同一台机器上,只是不建议这么做:由于Workflow Manager 需要使用数据库,我个人将其安装在 SQL Server机器 ...
- Android 笔记之 R 文件
Android笔记之R文件 h2{ color: #4abcde; } a{ color: blue; text-decoration: none; } a:hover{ color: red; te ...
- MonkeyRunner之MonkeyRecorder录制回放脚本
MonkeyRunner强大的功能之一便是允许用户自由录制需要的脚本,录制和回放需要两个脚本文件 monkey_recorder.py和monkey_playback.py 首先来看 monkey_r ...
- mysql分析慢查询日志工具mysqlsla安装
1 配置perlperl -MCPAN -e shell cpan[1]>install Time:HiRescpan[1]>install File::Tempcpan[1]> ...
- MATLAB/Excel-如何将Excel数据导入MATLAB中
在使用MATLAB对矩阵进行数据处理时,为了方便编辑与修改,常常需要先将数据录入到Excel中,然后再将其导入到MATLAB中参与矩阵运算.本文在MATLAB 2013a和Office 2013环境下 ...
- Docker入门系列之三:如何将dockerfile制作好的镜像发布到Docker hub上
这个系列的前两篇文章,我们已经把我们的应用成功地在Docker里通过nginx运行了起来,并且用dockerfile里制作好了一个镜像. Docker入门系列之一:在一个Docker容器里运行指定的w ...
- mac 上安装lua
mac 安装lua google了好个看起来都不怎么好操作,这个是在命令行下操作的很简单. http://www.lua.org/download.html curl -R -O http://www ...
- Android学习笔记_58_清除手机应用程序缓存
通过查看手机设置(setting)源代码,发现它里面获取应用大小和缓存大小是通过PackageManager里面的getPackageSizeInfo方法.然而此方法时私有的,因此通过反射调用此方法. ...
- Android学习笔记_4_单元测试
在实际开发中,开发android软件的过程需要不断地进行测试.而使用Junit测试框架,侧是正规Android开发的必用技术,在Junit中可以得到组件,可以模拟发送事件和检测程序处理的正确性. 1. ...
- c# 常见验证邮箱、电话号码、日期等格式
#region 验证邮箱验证邮箱 /**//// <summary> /// 验证邮箱 /// </summary> /// <param name="sour ...