PHP中的正则表达式函数介绍


Posted in PHP onFebruary 27, 2012

正则表达式(Regular Expression)

正则表达式系统:

1.POSIX

2.Perl

PHP中使用的regex是PCRE:

NOTE:PCRE(Perl兼容正则表达式,Perl Compatible Regular Expressions)

PCRE语法:

1.定界符

必须成对出现,可以使用除0-9a-zA-Z\以外的任何字符

2.原子

1.正则需要匹配的可见和不可见字符都是原子

2.一个正则表达式最少含有一个原子

3.当需要匹配诸如"("、"["、"^"等含有语义的符号时需要用"\"反斜线进行转义

原子字符:

\f 匹配换页符

\n 匹配换行符

\r 匹配回车符

\t 匹配制表符

\v 匹配垂直制表符

3.元字符

\ 转义字符

^ 匹配字符串起始处

$ 匹配字符串末尾

. 匹配除"\n"之外的任何单个字符

* 匹配前面的子表达式0或多次

+ 匹配前面的子表达式1次或多次

? 匹配前面的子表达式0次或1次

{n} 匹配n次

{n,} 匹配n次或n次以上

{n,m} 最少匹配n次至多匹配m次,(n<=m)

[] 中括号代表原子表,中间的原子地位都是相等。在匹配的时候,匹配表中的任意一个字符

[^] 抑扬符,排除后面的原子表所包含的字符。

(pattern) 匹配pattern并获取这一匹配。

\num 对获取的第num个匹配的引用。

(?:pattern) 匹配pattern但不获取这一匹配

(?=pattern) 正向肯定预查,非获取匹配,例如:windows(?=XP|7)能匹配windowsXP中的windows不能匹配windows98中的windows

(?!=pattern) 正向否定欲查非获取匹配,例如:windows(?!98|2000),能匹配windowsXP中的windows,不能匹配windows98中的windows

(?<=pattern) 反向肯定预查,非获取匹配。例如:(?<=My|Postgre)SQL能匹配MySQL中的SQL,不能匹配MSSQL中的SQL

(?<!pattern) 反向否定预查,非获取匹配。例如:(?<!My|Postgre)SQL能匹配MSSQL中的SQL,不能匹配MySQL中的SQL

\b 匹配单词边界

\B 匹配除单词边界以外的字符


\d 匹配任何一个数字。等价于[0-9]

\D 匹配任何一个非数字以外的字符。等价于[^0-9]

\s 匹配任何一个空白字符(包括空格、制表符、换页符等)。等价于[\f\n\r\t\v]

\S 匹配任何一个非空白字符。等价于[^\f\n\r\t\v]


\w 匹配任何一个数字、字母或下划线。等价于[0-9a-zA-Z]

\W 匹配任何一个非数字、字母或下划线的字符。等价于[^0-9a-zA-Z]

4.模式修正符

i 不区分大小写

m 此模式中如果有回车或换行,^和$将匹配每行的行首和行尾

s 让.能匹配\n

x 忽略空白

U 取消贪婪,相当于(.*?)

A 与^效果一样

D 结尾处不忽略回车 ,在结束处有$符的时候,在匹配的字符串后面加上回车,$依然能够匹配它成功。但是加上D之后,结尾的回车,不再匹配

  NOTE:正则表达式是从左向右进行匹配的

相关函数:

preg_filter — 执行一个正则表达式搜索和替换

preg_grep — 返回匹配模式的数组条目

preg_last_error — 返回最后一个PCRE正则执行产生的错误代码

preg_match_all — 执行一个全局正则表达式匹配

preg_match — 执行一个正则表达式匹配

preg_quote — 转义正则表达式字符

preg_replace_callback — 执行一个正则表达式搜索并且使用一个回调进行替换

preg_replace — 执行一个正则表达式的搜索和替换

preg_split — 通过一个正则表达式分隔字符串

PHP 相关文章推荐
一个很方便的 XML 类!!原创的噢
Oct 09 PHP
一个php作的文本留言本的例子(二)
Oct 09 PHP
php文章内容分页并生成相应的htm静态页面代码
Jun 07 PHP
探讨各种PHP字符串函数的总结分析
Jun 05 PHP
ThinkPHP的RBAC(基于角色权限控制)深入解析
Jun 17 PHP
利用phpexcel把excel导入数据库和数据库导出excel实现
Jan 09 PHP
PHP实现的MongoDB数据库操作类分享
May 12 PHP
PHP中cookie和session的区别实例分析
Aug 28 PHP
php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码
Sep 04 PHP
php时间函数用法分析
May 28 PHP
简单解决微信文章图片防盗链问题
Dec 17 PHP
PHP正则表达式函数preg_replace用法实例分析
Jun 04 PHP
支持中文字母数字、自定义字体php验证码代码
Feb 27 #PHP
一些需要禁用的PHP危险函数(disable_functions)
Feb 23 #PHP
PHP面向对象法则
Feb 23 #PHP
优化PHP程序的方法小结
Feb 23 #PHP
数据库中排序的对比及使用条件详解
Feb 23 #PHP
PHP中几个常用的魔术常量
Feb 23 #PHP
PHP教程之PHP中shell脚本的使用方法分享
Feb 23 #PHP
You might like
国内咖啡文化
2021/03/03 咖啡文化
PHP如何得到当前页和上一页的地址?
2006/11/27 PHP
解析php中的fopen()函数用打开文件模式说明
2013/06/20 PHP
thinkphp3.x自定义Action、Model及View的简单实现方法
2016/05/19 PHP
PDO::beginTransaction讲解
2019/01/27 PHP
JQuery自定义事件的应用 JQuery最佳实践
2010/08/01 Javascript
JQuery模板插件 jquery.tmpl 动态ajax扩展
2011/11/10 Javascript
javascript (用setTimeout而非setInterval)
2011/12/28 Javascript
JQuery鼠标移到小图显示大图效果的方法
2015/06/10 Javascript
jQuery解析Json实例详解
2015/11/24 Javascript
jQuery实现漂亮实用的商品图片tips提示框效果(无图片箭头+阴影)
2016/04/16 Javascript
JavaScript对象封装的简单实现方法(3种方法)
2017/01/03 Javascript
JS中from 表单序列化提交的代码
2017/01/20 Javascript
JS中setTimeout和setInterval的最大延时值详解
2017/02/13 Javascript
完美解决input[type=number]无法显示非数字字符的问题
2017/02/28 Javascript
基于vue2实现左滑删除功能
2017/11/28 Javascript
微信小程序使用modal组件弹出对话框功能示例
2017/11/29 Javascript
Bootstrap 按钮样式与使用代码详解
2018/12/09 Javascript
jQuery实现高级检索功能
2019/05/28 jQuery
vue实现手机号码的校验实例代码(防抖函数的应用场景)
2019/09/05 Javascript
layui上传图片到服务器的非项目目录下的方法
2019/09/26 Javascript
layer页面跳转,获取html子节点元素的值方法
2019/09/27 Javascript
原生js实现点击轮播切换图片
2020/02/11 Javascript
openlayers实现地图弹窗
2020/09/25 Javascript
python 生成器生成杨辉三角的方法(必看)
2017/04/10 Python
Python多线程扫描端口代码示例
2018/02/09 Python
详解pytorch 0.4.0迁移指南
2019/06/16 Python
基于Python计算圆周率pi代码实例
2020/03/25 Python
Python3 pywin32模块安装的详细步骤
2020/05/26 Python
Python模拟登入的N种方式(建议收藏)
2020/05/31 Python
For Art’s Sake官网:手工制作的奢华眼镜
2018/12/15 全球购物
寒假实习自荐信
2014/01/26 职场文书
工商管理专业自荐信
2014/06/03 职场文书
学校节能宣传周活动总结
2014/07/09 职场文书
python获取对象信息的实例详解
2021/07/07 Python
sql server 累计求和实现代码
2022/02/28 SQL Server