PHP知识点(3) - 正则

组成:

定界符//

原子

元字符

模式修正符

一、原子

每个模式中至少要包含一个原子

普通的原子:0-9 a-z A-Z

一些特殊符号和元字符作为原子:需要转义,如. * + ?等

一些非打印字符:\n \f \r \t \v \cx

通用字符类型:\d \D \s \S \w \W

自字义原子表:[],从原子表中只能选择一个原子进行匹配

二、元字符

*

+

?

.

|

{n}

{n,}

{n,m}

^或\A

$或\Z

\b单词的边界

\B非单词边界

[]

[^]

()

注意点:

1、“.”通常可以使用“.*?”或“.+?”组合来匹配除换行符以外的任何字符串,取消贪婪模式

2、后向引用,使用原字符()标记的开始和结束,存储匹配的缓冲区编号从1开始,连续编号直至99。每个缓冲区都可以使用\n来访问,其中n为一个标识特定缓冲区的一位或两位十进制数。如\1,\2,\3等形式,在正则中使用还需要加上\转义,例如:\\1,\\2。当需要使用模式单元,而又不想存储匹配结果时,可以使用非捕获元字符,“?:”,"?=","?!",来忽略对匹配结果的保存。

三、模式修正符

i:不区分大小写

m:将字符串视为多行

s:如果加上此字符,模式中的原点”.“匹配所有字符,包括换行符\f

x:模式中的空白忽略不计,除非它已经被转义

e:只用在preg_replace 中,该函数在逆向引用做正常替换,将其作为PHP代码求值,并用其结果来替换所搜索的字符串,见细说PHP第307页例。

U:不要和.*?一起使用,否则会再次启用贪婪模式

D:加上此修饰符后,模式中的$仅匹配结尾,如果加上m多行模式,则忽略此选项。

与Perl兼容的正则函数

字符串的匹配与查找:

1、int preg_match(pattern,subject[ ,array matchs])按指定的正则表达式,对字符串进行搜索和匹配一次,第一个参数是正则,第二个参数是字符串,第三个参数是匹配的结果放到这个数组中,最终返回结果是0或1

2、int preg_match_all(pattern,subject,array matchs[ ,int flags]),按照指定的正则匹配到字符串的末尾,可以获得所有的匹配结果,前三个参数同上,第四个参数有以下两个值:

PREG_PATTERN_ORDER:默认,对结果排序使用$matchs[0]为全部模式匹配的数组,$matchs[1]为第一个括号中的子模式所匹配的字符串组成的数组。

PREG_SET_ORDER:对结果排序使$matchs[0]为第一组匹配项的数组,$matchs[1]为第二组匹配项的数组,依此类推

3、array preg_grep(string pattern, array input)匹配数组中的元素,返回与正则表达式匹配的单元,返回值为一个数组

字符串替换:

mixed preg_replace(mixed pattern, mixed replacement, mixed subject, [, int limit])

第四个参数可选 ,则仅替换Limit 个匹配项

a):三个参数都是字符串

b):前三个参数都可以是数组,如果第二个参数少于第一个参数,则用空串替换掉匹配的项目

c):第一个参数参是数组,第二个是字符串,刚第一个参数的匹配的所有值都用在此串上

d):第一个参数是数组,第二个是数组,第三个是字符串,像书中例子上的UBB代码一样。

模式修正符e用在此函数上

str_replace();前两个参数可以是串,也可以是数组,第二个参数如果是串,则用该串替换第一个参数的所有项,通常第一个第二个参数相等。如果第二个参数少于第一个个数,用空串代替。

4、array  preg_split(separator pattern, string[, limit[, flag]]) 将第二个参数给定的字符串按照第一个正则规则进行做分隔,第三个参数为分隔次数限制 ,第四个参数参考细说PHP第二版311页

常见正则:

匹配中文字符的正则表达式: [\u4e00-\u9fa5]

匹配空白行的正则表达式:\n\s*\r

匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? />

匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*

匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}

匹配腾讯QQ号:[1-9][0-9]{4,}

匹配中国邮政编码:[1-9]\d{5}(?!\d)
日期格式:^\d{4}-\d{1,2}-\d{1,2}

PHP知识点(3) - 正则

时间: 2024-10-13 02:59:27

PHP知识点(3) - 正则的相关文章

模拟模板替换功能--js

概要: 因为之前的项目是angular开发(vue和react也是一样),对其中的双向数据绑定的使用感觉很方便,然后就思考怎么使用到jquery框架中来,适用于 列表生成 知识点: 正则与其反向引用,str.replace html部分 <!--列表li 模板--> <script type="text/html" id="row"> <li> <h6 class="qa_title"><a

JavaScript - 收藏集 - 掘金

Angular 中的响应式编程 -- 浅淡 Rx 的流式思维 - 掘金第一节:初识Angular-CLI第二节:登录组件的构建第三节:建立一个待办事项应用第四节:进化!模块化你的应用第五节:多用户版本的待办事项应用第六节:使用第三方样式库及模块优化用第七节:给组件带来活力Rx--隐藏在 Angular 中的利剑Redux你的 A... Electron 深度实践总结 - 前端 - 掘金思维导图 前言: Electron 从最初发布到现在已经维护很长一段时间了,但是去年才开始慢慢升温.笔者个人恰好

正则知识点解读及常用表达式(判断有效数字、手机号邮箱等)

---恢复内容开始--- 1.正则仅仅就是用来处理字符串的:匹配.捕获 匹配:验证当前的字符串是否符合我们的规则(每一个正则都是一个规则) 捕获:在整个字符串当中,把符合规则的字符都依次的获取到--->exec.match.replace 2.正则的组成:元字符.修饰符 元字符: 特殊意义的元字符: \d匹配一个0-9的数字相当于[0-9],和它相反的 \D匹配一个除了0-9的任意字符相当于[] \w匹配一个0-9.a-z.A-Z_ 的数字或字符,相当于[0-9a-zA-Z_]  . \s匹配一

linux综合顺练(涉及管道,正则,重定向、用户及组管理、权限管理等相关知识点)

一.概述   本博文是对前边总结的知识点的一个综合利用,涉及的知识点比较广泛,涉及的大概有"bash特性之管道","bash特性之重定向","grep命令与正则表达式的利用","linux下用户与组管理","linux下权限管理"等.下面给出上边提到知识点之前的博客链接: bash的重定向和管道相关知识点:http://blog.51cto.com/9657273/2172717 文件基础管理类命令汇总:h

js正则知识点

\w字符(字母数字下划线)\W非字符\s空格\b数字\b+表示至少一个数字\b|\s表示数字或空格() :分组\1:重复的第一个子项\2:重复的第二个子项^起始位置$结束位置/**********/[1,9] 取1到9的所有9个自然数中的一个{4,7}:最少出现4次,最多出现7次{4,}:最少出现4次{4}:正好出现4次 \d+与\d{1,}等价(表示至少出现1次)\d?与\d{0,1}等价(表示出现0次或1次)\d*与\d{0,}至少出现0次/**********//jewave/i (i不区

有关正则的知识点梳理

正则 一个用来处理字符串的规则,通过规则我们可以验证字符串是否匹配对应的格式(TEST),也可以把正则匹配的结果在字符串中捕获到(EXEC) 正则由两部分组成: 修饰符:i(ignoreCase忽略大写小匹配).m(multilin匹配多行).g(global全局匹配,解决正则捕获的懒惰性) 元字符 特殊元字符 \ :转译字符 ^:以某一个元字符开头 $:以某一个元字符结尾 .:除了\n(换行符)以外的任意字符 \d:0-9之间的一个数字,等价于[0-9] \D:和\d相反,除了0-9之间的任意

知识点 正则

https://blog.csdn.net/dhd040805/article/details/80259993https://www.cnblogs.com/nulige/p/10260149.html先查看以上两篇文章 package main import (     "fmt"     "regexp" ) func main() {     reg, err := regexp.Compile("[a-z0-9#$%&]+")

正则知识点总结

\b   :要精确地查找hi这个单词的话,我们应该使用\bhi\b .     :匹配除了换行符以外的任意字符 *    :匹配任意次 \d   :匹配数字 \s   :匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等 \w  :匹配字母或数字或下划线或汉字 ^   :匹配字符串开始 $   :匹配字符串结束 ?  :重复零次或一次 +   :重复一次或多次 \W 匹配任意不是字母,数字,下划线,汉字的字符 \S 匹配任意不是空白符的字符 \D 匹配任意非数字的字符 \B 匹

知识点

1 2008r2-sp1 更新2 改名,强密码,改端口,开防火墙3 组策略 对计算机及其相关硬件非常了解(包括但不限于pc机,服务器,小型机,存储器,交换机,路由器,防火墙,负载器,行为管理等)对操作系统(包括windows,unix/linux两大派别)有较深的理解,linux更熟悉一些对数据库(包括MSSQL,Mysql)管理也很精通,单机上的安装配置,管理维护,监控调优对计算机网络的历史,原理,技术对存储设备对底层架构之上的应用层面--即与广大用户最近的,熟悉C/S,B/S正则流派grep