thinkphp验证器正则常用规则

author author     2023-04-05     721

关键词:

参考技术A

ThinkPHP的自动验证常用的正则

一般我们见的比较多的是设置规则为require、email之类的,其实这些本身也是属于正则表达式验证方式,只是系统内置定义了一些常用的正则表达式而已。这些内置的正则表达式的定义可以参考model类的regex方法,内置支持的正则定义包括:
require 字段必须、email 邮箱、url URL地址、currency 货币、number 数字、zip 邮编、integer 整数、double 浮点数、english 英文字母,但是并不局限于这些正则规则的,我们完全可以直接在验证规则里面使用正则表达式进行定义,这样我们可以凭借强大的正则表达式来进行表单字段验 证,例如:

附上一些表单验证中比较常用的正则表达式写法:

匹配特定字符串:

限定符
限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有 * 或 + 或 ? 或 n 或 n, 或 n,m 共6种。

正则表达式的限定符有:

ThinkPHP的自动验证机制是为了进行表单数据验证,验证可以支持function、 callback、confirm、equal、unique和regex,这里要讲的是使用正则表达式进行验证。

特殊字符

许多元字符要求在试图匹配它们时特别对待。若要匹配这些特殊字符,必须首先使字符"转义",即,将反斜杠字符\\ 放在它们前面。下表列出了正则表达式中的特殊字符:

正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

例如:

构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与运算符可以将小的表达式结合在一起来创建更大的表达式。正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。

正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

普通字符包括没有显式指定为元字符的所有可打印和不可打印字符。这包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号。

非打印字符也可以是正则表达式的组成部分。下表列出了表示非打印字符的转义序列:

所谓特殊字符,就是一些有特殊含义的字符,如上面说的 runoo*b 中的 ,简单的说就是表示任何字符串的意思。如果要查找字符串中的 * 符号,则需要对 * 进行转义,即在其前加一个 : runo*ob 匹配 runo ob。

许多元字符要求在试图匹配它们时特别对待。若要匹配这些特殊字符,必须首先使字符"转义",即,将反斜杠字符\\ 放在它们前面。下表列出了正则表达式中的特殊字符:

限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有 * 或 + 或 ? 或 n 或 n, 或 n,m 共6种。

正则表达式的限定符有:

由于章节编号在大的输入文档中会很可能超过九,所以您需要一种方式来处理两位或三位章节编号。限定符给您这种能力。下面的正则表达式匹配编号为任何位数的章节标题:

请注意,限定符出现在范围表达式之后。因此,它应用于整个范围表达式,在本例中,只指定从 0 到 9 的数字(包括 0 和 9)。

这里不使用 + 限定符,因为在第二个位置或后面的位置不一定需要有一个数字。也不使用 ? 字符,因为使用 ? 会将章节编号限制到只有两位数。您需要至少匹配 Chapter 和空格字符后面的一个数字。

如果您知道章节编号被限制为只有 99 章,可以使用下面的表达式来至少指定一位但至多两位数字。

上面的表达式的缺点是,大于 99 的章节编号仍只匹配开头两位数字。另一个缺点是 Chapter 0 也将匹配。只匹配两位数字的更好的表达式如下:

* 、+限定符都是贪婪的,因为它们会尽可能多的匹配文字,只有在它们的后面加上一个?就可以实现非贪婪或最小匹配。

例如,您可能搜索 HTML 文档,以查找括在 H1 标记内的章节标题。该文本在您的文档中如下:

<H1>Chapter 1 - 介绍正则表达式</H1>

贪婪: 下面的表达式匹配从开始小于符号 (<) 到关闭 H1 标记的大于符号 (>) 之间的所有内容。

非贪婪: 如果您只需要匹配开始和结束 H1 标签,下面的非贪婪表达式只匹配 <H1>。

如果只想匹配开始的 H1 标签,表达式则是:

通过在 *、+ 或 ? 限定符之后放置 ?,该表达式从"贪心"表达式转换为"非贪心"表达式或者最小匹配。

定位符使您能够将正则表达式固定到行首或行尾。它们还使您能够创建这样的正则表达式,这些正则表达式出现在一个单词内、在一个单词的开头或者一个单词的结尾。

正则表达式的定位符有:

thinkphp自动验证,写验证规则用正则表达式,会出现问题,求大神解答!~

用此正则就可以验证protected$_validate=array(array('Fname','/^\w2,$/','用户名格式错误',1,'regex',1),);写成这样就不行array('Fname','/^[a-z0-9\u4E00-\u9FFF]2,20$/','用户名格式错误',1,'regex',1),我... 查看详情

jquery里正则的使用方法及常用的正则验证(代码片段)

  本文是一篇关于jquery使用正则来验证输入,及一些常用验证规则的基础文章,适合新手。假设我们的网页里有这样的一个表单:<inputid="aijquery"type="text"><buttonid="btn">验证</button> 1.验证用户输入的只能是英文... 查看详情

常用的正则表达式格式

背景:正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。通常我们使用正则表达式用作信息的验证。虽然正则表达式非常繁琐,但是它的功能却是非常的强大。学会之后会让我们的项目中除了提高效率... 查看详情

常用的正则表达式(代码片段)

1.正则表达式正则表达式,又称规则表达式**。(英语:RegularExpression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换、验证表单、提取**那些符合某个模式... 查看详情

c#正则表达式编写及验证方法

01—前言    正则表达式应用很广泛,应该大多人都接触过了,这个语法规则既多又凌乱,每次用的时候都得重新看一遍语法,真的是让人头疼啊!但是实际上我们并不要掌握很多的符号用法规则,牢记... 查看详情

正则的使用心得

以前使用正则是不会自己去学或者去了解怎么实现正则的语法的,感觉好难懂的样子,于是拖到现在 其实正则不是我想象中的那么难,至少入门还是比较简单。我刚学习了一些比较简单的,谈谈我对正则的理解以及使用心得... 查看详情

正则表达式的使用

一、什么是正则表达式 RegularExpression,代表具有一定规则的表达式。主要用来检索、替换、验证匹配这个规则的字符串。 二、js当中来使用正则表达式regExp对象来使用正则表达式,对象的创建1.常用的:varreg=/正则表达式/... 查看详情

jQuery validate:如何为正则表达式验证添加规则?

...我想迁移我现有的ASP.NET解决方案以使用jQuery而不是ASP.NET验证器。我缺少正则表达式验证器的替代品。我希望能够做这样的事情:$ 查看详情

js常用正则表达式表单验证代码

js常用正则表达式表单验证代码方法一:varre=/正则表达式/;re.test($("txtid").val());方法二:$("txtid").val.match(/正则表达式/);附:验证数字的正则表达式集(转载)验证数字:^[0-9]*$验证n位的数字:^d{n}$验证至少n位数字:^d{n,}$验证m-n... 查看详情

手机号码密码的正则验证规则

1.验证手机号码是否符合规则,包括主流的号段varmobile={validate_mobile:function(mobile){varmobilePattern={mobile:/^(((13[0-9])|(14[5-7])|(15[0-9])|(17[0-9])|(18[0-9]))+d{8})$/};if(!mobilePattern.mobile.test(mobile)){retur 查看详情

js常用正则表达式表单验证代码

方法一:  varre=/正则表达式/;  re.test($("txtid").val())  方法二:  $("txtid").val.match(/正则表达式/);  附:  验证数字的正则表达式集(转载)  验证数字:^[0-9]*$  验证n位的数字:^d{n}$  验证至少n位数... 查看详情

Laravel 中正则表达式规则的自定义验证消息?

】Laravel中正则表达式规则的自定义验证消息?【英文标题】:CustomvalidationmessageforregexruleinLaravel?【发布时间】:2013-12-1716:19:23【问题描述】:非常基本的问题,我正在尝试为Laravel中的正则表达式验证规则自定义错误消息。特定... 查看详情

常用的正则表达式

常用正则表达式合集:验证数字:^[0-9]*$验证n位的数字:^d{n}$验证至少n位数字:^d{n,}$验证m-n位的数字:^d{m,n}$验证零和非零开头的数字:^(0|[1-9][0-9]*)$验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$验证有1-3位小数的正实数:^[0-9]+(.[0-... 查看详情

regexpjavascript中正则表达式判断匹配规则以及常用方法

...一种数据结构,对字符串进行操作的需求几乎无处不在。正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了。d... 查看详情

常用正则验证2

1、身份证验证(带x)//验证身份证信息(获取出生日期和性别)functionfunc_CheckSFZ(ob){varobj=ob.value;obj=obj.toUpperCase();if(!(/(^d{15}$)|(^d{17}([0-9]|X)$)/.test(obj))){alert(‘输入的身份证号长度不对,或者号码不符合规定! 15位号码应全为数字... 查看详情

thinkphp3.2的validate怎么写啊

protected$validate=array('addFood'=>array(),'update'=>array(),);接下来怎么调用addFood验证啊参考技术A你确定3.2里边有这种写法?你是把3.2和5.x搞混了吧?3.2的写法是:protected$_validate=array(   // array(验证字段1,验... 查看详情

常用的正则验证

1.搜索框至少输入2个字regex:/^[0-9A-Za-zu4e00-u9fa5]{2,21}$/;2.要求非空,非负,非零的整数或者小数,如果是小数则要求小数点以后只能有两位regex:/^(0(?:[.](?:[1-9]d?|0[1-9]))|[1-9]d*(?:[.]d{1,2}|$))$/g;3.同时验证手机和座机电话:regx:/(^1d{10}$|^(0d... 查看详情

常用正则表达式

有些东西不是记不住,是不记住,所以还是查比较方便点。验证数字:^[0-9]*$验证n位的数字:^d{n}$验证至少n位数字:^d{n,}$验证m-n位的数字:^d{m,n}$验证零和非零开头的数字:^(0|[1-9][0-9]*)$验证有两位小数的正实数:^[0-9]+(.[0-9]{2})... 查看详情