tp5 php正则邮箱,TP5验证器使用实例

TP5验证器建立模块\validate\验证器文件名

例如我们定义了一个验证USER的验证器类<?php

namespace app\admin\validate;

use think\Validate;

class Admin extends Validate{

protected $rule = [

'username' => 'require|min:3|max:16|unique:admin',

'password' => 'require|min:6|max:32',

];

protected $message = [

'username.require' => '管理员名称不能为空',

'password.require' => '管理员密码不能为空',

'username.min' => '管理员名称最少应为3位',

'username.unique' => '管理员名称已经存在',

'password.min' => '管理员密码最少应为6位',

'username.max' => '管理员名称不能超过16位',

'password.max' => '管理员密码不能超过32位',

];

protected $scene=[

'edit' => ['username'],

'add' => ['username','password'],

];

}

验证器的使用在需要验证的地方可以使用//验证数据

$validate = Loader::validate('Admin');

if(!$validate->scene('edit')->check($data)){

$this->error($validate->getError());die;

}

扩展正则在验证器类里的使用方法<?php

namespace app\index\validate;

use think\Validate;

class User extends Validate{

// 正则自定义验证手机方法

protected $regex = [ 'mobile' => '/^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/'];

protected $rule = [

'username' => 'require|min:6|max:16|unique:user',

'password' => 'require|min:6',

//数组的写法'mobile' => 'require|regex:mobile',

'mobile' => ['require','regex'=>'mobile'],

'mail' => 'require|email',

'captcha' => 'require|captcha',

];

protected $message = [

'username.require' => '用户名不能为空',

'username.min' => '用户名至少为6个字符',

'username.max' => '用户名最多为16个字符',

'username.unique' => '用户名已存在',

'password.require' => '密码不能为空',

'password.min' => '密码至少为6个字符',

'mobile.require' => '手机号不能为空',

'mobile.regex' => '手机号填写不正确',

'mial.require' => 'E-mail不能为空',

'mial.email' => 'E-mail格式不正确',

'captcha.require' => '验证码不能为空',

'captcha.captcha' => '验证码不正确',

];

protected $scene=[

'add' => ['username','password','mobile','mail','captcha'],

];

}// 验证规则

protected $rule = [

'goods_id' => 'checkGoodsId',

'goods_name' => 'require|min:3|max:150|unique:goods',

'cat_id' => 'number|gt:0',

'goods_sn' => 'unique:goods|max:20',

'shop_price' => ['require', 'regex' => '([1-9]\d*(\.\d*[1-9])?)|(0\.\d*[1-9])'],

'market_price' => 'require|regex:\d{1,10}(\.\d{1,2})?$|checkMarketPrice',

'weight' => 'regex:\d{1,10}(\.\d{1,2})?$',

'give_integral' => 'regex:^\d+$',

'is_virtual' => 'checkVirtualIndate',

'exchange_integral' => 'checkExchangeIntegral',

'is_free_shipping' => 'require|checkShipping',

'commission' => 'checkCommission'

];

//错误信息

protected $message = [

'goods_name.require' => '商品名称必填',

'goods_name.min' => '名称长度至少3个字符',

'goods_name.max' => '名称长度至多50个汉字',

'goods_name.unique' => '商品名称重复',

'cat_id.number' => '商品分类必须填写',

'cat_id.gt' => '商品分类必须选择',

'goods_sn.unique' => '商品货号重复',

'goods_sn.max' => '商品货号超过长度限制',

'goods_num.checkGoodsNum' => '抢购数量不能大于库存数量',

'shop_price.require' => '本店售价必填',

'shop_price.regex' => '本店售价格式不对',

'market_price.require' => '市场价格必填',

'market_price.regex' => '市场价格式不对',

'market_price.checkMarketPrice' => '市场价不得小于本店价',

'weight.regex' => '重量格式不对',

'give_integral.regex' => '赠送积分必须是正整数',

'exchange_integral.checkExchangeIntegral' => '积分抵扣金额不能超过商品总额',

'is_virtual.checkVirtualIndate' => '虚拟商品有效期不得小于当前时间',

'is_free_shipping.require' => '请选择商品是否包邮',

];

继续扩展自定义验证器类namespace app\index\validate;

use think\Validate;

class User extends Validate

{

protected $rule = [

'name'  =>  'checkName:thinkphp',

'email' =>  'email',

];

protected $message = [

'name'  =>  '用户名必须',

'email' =>  '邮箱格式错误',

];

// 自定义验证规则

protected function checkName($value,$rule,$data)

{        return $rule == $value ? true : '名称错误';

}

}

自定义验证方法可以传入5个参数,后面的三个可以选用顺序为

验证数据,验证规则,全部数据,字段名,字段描述use think\Validate;

class User extends Validate{

protected $rule = [

'username' => 'require|min:6|max:16|unique:user',

'password' => 'require|min:6',

'mobile' => ['require','checkMobile'],

'mail' => 'require|email',

'captcha'=>'require|captcha',

];

protected $message = [

'username.require' => '用户名不能为空',

'username.min' => '用户名至少为6个字符',

'username.max' => '用户名最多为16个字符',

'username.unique' => '用户名已存在',

'password.require' => '密码不能为空',

'password.min' => '密码至少为6个字符',

'mobile.require' => '手机号不能为空',

'mail.require' => 'E-mail不能为空',

'mail.email' => 'E-mail格式不正确',

'captcha.ruquire' => '验证码不能为空',

'captcha.captcha' => '验证码不正确',

];

protected $scene=[

'add' => ['username','password','mobile','mail','captcha',],

];

//自定义验证手机号格式

protected function checkMobile($value)

{

//检测手机号码是否合法

if(!preg_match("/^(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$/",$value)){

return '手机号格式不正确';

}else{

return true;

}

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/430950.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

zookeeper 密码_阿里资深JAVA架构带你深度剖析dubbo和zookeeper关系

为什么要用dubbo&#xff1f;当网站规模达到了一定的量级的时候&#xff0c;普通的MVC框架已经不能满足我们的需求&#xff0c;于是分布式的服务框架和流动式的架构就凸显出来了。单一应用架构当网站流量很小时&#xff0c;只需一个应用&#xff0c;将所有功能都部署在一起&…

python pandas csv 追加 空行,python – Pandas:read_csv在空行后忽略行

有一个奇怪的.csv文件,如&#xff1a;header1,header2,header3val11,val12,val13val21,val22,val23val31,val32,val33很好,但在这些线之后,总会有一个空行,后面跟着很多无用的线.整个事情是一致的&#xff1a;header1,header2,header3val11,val12,val13val21,val22,val23val31,…

nw.js FrameLess Window下的窗口拖拽与窗口大小控制

nw.js FrameLess Window下的窗口拖拽与窗口大小控制 很多时候&#xff0c;我们觉得系统的Frame框很难看&#xff0c;于是想自定义。 自定义Frame的第一步是在package.config文件中将frame选项设置为false。 { "name": "1", "main": "index.…

python控制语句实验报告,python流程控制语句案例练习

最近玩python&#xff0c;为了更好的学习其中的流程控制语句&#xff0c;本身写了一个查询员工信息和更新信息的脚本&#xff0c;此脚本仅供练习使用。大拿可绕行&#xff01;python#!/usr/bin/env pythonimport sysimport osos.system(clear)mess \033[;35m ID :%s\033[0m\03…

linux 文件重命名_如何在 Linux 上重命名一组文件 | Linux 中国

要用单个命令重命名一组文件&#xff0c;请使用 rename 命令。它需要使用正则表达式&#xff0c;并且可以在开始前告诉你会有什么更改。-- Sandra Henry-stocker几十年来&#xff0c;Linux 用户一直使用 mv 命令重命名文件。它很简单&#xff0c;并且能做到你要做的。但有时你需…

Spring 构造注入 传參数

1. 提供相应的构造方法 //构造器注入 public class Bean6 {private String name;private Integer age;// 服务于构造器注入使用public Bean6(String name, Integer age) {super();this.name name;this.age age;}public void show() {System.out.println("bean6:&…

php正则表达式函数案例,PHP正则表达式函数preg_replace用法实例分析

PHP正则表达式函数preg_replace用法。&#xff0c;具体如下&#xff1a;preg_replace 执行一个正则表达式的搜索和替换语法&#xff1a;preg_replace (pattern ,replacement ,subject,limit,count )参数描述pattern正则表达式(字符串或字符串数组)replacement用于替换的字符串或…

python tk protocol_Python Modbus_tk在树莓派上实现rtu master

利用 python modbus工具实现modbus从站的数据采集&#xff0c;很方便简单。Python Modbus 协议工具目前有下面三种&#xff1a;modbus_tk&#xff1a;完整modbus协议栈的实现&#xff0c;支持modbus tcp/rtu&#xff5b;1.提供slave模拟器&#xff0c;即模拟modbus server:502)…

根据另外一个表来更新,增加字段

update table1 set field1table2.field1,field2table2.field2from table2where table1.idtable2.id添加字段&#xff1a;alter table 表名 add 字段名 类型删除字段&#xff1a;alter table 表名 drop column 字段名转载于:https://www.cnblogs.com/yzwdli/p/5147512.html

html注册跳转php错误500,页面跳转后提示HTTP 异常 500(Internal Server Error):服务器尝试执行请求时遇到了意外情况...

页面跳转后提示HTTP 错误 500(Internal Server Error)&#xff1a;服务器尝试执行请求时遇到了意外情况。index.php跳转到chkadmin.php提示(服务器错误网站在检索 http://localhost/shop/admin/chkadmin.php 时遇到错误。 该网站可能关闭进行维护或配置不正确。以下是一些建议&…

python爬虫运行不出结果_请问这个为什么就是爬不到,运行之后电脑卡的不行,求大佬指导...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼import requestsfrom multiprocessing import Poolimport reimport jsonfrom requests.exceptions import ConnectionErrordef get_to_html(url):try:headers {"User-Agent": "Mozilla/5.0 (compatible; MSIE 9.0;…

oracle插入性能优化,Oracle-insert性能优化

看见朋友导入数据&#xff0c;花了很长时间都没完成&#xff01;其实有很多快速的方法&#xff0c;整理下&#xff01; 向表中插入数据有很多办法,但是方法不同&#xff0c;性能差别很看见朋友导入数据&#xff0c;&#xff0c;花了很长时间都没完成&#xff01;其实有很多快速…

python中setup什么意思_一个关于python3中setup.py小概念

一个关于setup.py小概念关于python setup.py bdistpython setup.py sdist两者的区别sdist 指的是source dist 即源码发布&#xff0c;带setup.pybdist 指的是built (binary) dist 即编译过(二进制)发布 不带setup.py查看setup.py各种编译命令参数python setup.py --help-c…

dba_segments和dba_tables的不同

create table tset as select * from dba_objects; select count(*) from tset; select table_name,blocks,empty_blocks from dba_tables where table_name’TSET’; select segment_name,bytes,blocks,extents from dba_segments where segment_name’TSET’; 问题来了&#…

oracle数sqlplus,sqlplus查询oracle数据库数据容量

登录sqlplus&#xff1a;cmd命令行登录&#xff1a;sqlplus orcl/orcl as sysdba查询表空间使用率select b.file_id  文件ID,b.tablespace_name  表空间,b.file_name     物理文件名,b.bytes       总字节数,(b.bytes-sum(nvl(a.bytes,0)))   已使用,sum(nv…

微博air客户端_打磨近十年,接近「完美」的 macOS 第三方微博客户端:Maipo

2020年11月13日&#xff0c;macOS Big Sur正式推送当天&#xff0c;Maipo for 微博也迎来了4.0.0大版本更新。从Weibo for Mac&#xff08;2011年&#xff09;、WeiboX&#xff08;2014年&#xff09;到Maipo&#xff08;2017年&#xff09;&#xff0c;跨度近十年&#xff0c;…

oracle 匿名段,这段匿名块看着没什么问题啊

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼一旦执行,无限请求输入,怎么直接结束匿名块的执行而不是ctrlc退出sqlplusDeclarev_id teacher.teacher_id%Type:&teacher_id;v_name teacher.tname%Type:&tname;v_sex teacher.tsex%Type:&tsex;v_birth teacher.tbirth…

sqlserver查看被锁表、解锁

查看别锁表 select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sys.dm_tran_locks where resource_typeOBJECT解锁方式&#xff1a; 1 declare spid int 2 Set spid 244 --锁表进程 3 declare sql varchar(1000) 4 set sqlkill ca…

python查看各列数据类型_pandas中查看数据类型的几种方式

在获得数据之后、分析数据之前&#xff0c;我们一般需要对数据总体进行一个概览&#xff0c;如有哪些字段&#xff0c;每个字段的类型&#xff0c;值是否缺失等&#xff0c;以下列出了几种方法&#xff0c;供我们方便快捷的查看dataframe的数据类型。1、维度查看&#xff1a;df…

sqlserver oracle插件,SQLServer链接服务器至Oracle

在SQL SERVER中访问ORACLE表的方法在SQL SERVER中&#xff0c;能否访问ORACLE表&#xff0c;进行查询操作呢&#xff1f;答案无疑是可以的&#xff0c;下面就为你介绍在SQL SERVER中访问ORACLE表的实现方法&#xff0c;供您参考。一、配置方法一&#xff1a;通过oracle的sql*ne…