语法和JavaScript中的正则语法基本一致。
PHP中的正则函数:
![](https://img.kancloud.cn/44/0b/440b26c7500b71e4c9a6bfe8415735df_1049x425.png)
# 1、preg_match()
preg_match()返回匹配的次数,它的返回值是0或者是1.
0表示不匹配。
1表示匹配一次,因为preg_match在匹配一次之后就停止向后检索了。和js中不加g的情况一样。
查看匹配的结果:
![](https://img.kancloud.cn/a4/fb/a4fb36712f5a7e38dde28bd5df360831_655x364.png)
带有子表达式的例子:
![](https://img.kancloud.cn/98/a6/98a62521792ab93d62b762517117d52a_754x169.png)
# 2、preg_match_all();
执行正则表达式的全局匹配,类似于js中的带g的匹配。
![](https://img.kancloud.cn/8d/4e/8d4e31ff9feafbc6c3f3648a59fd4071_750x304.png)
带有子表达式的例子:
![](https://img.kancloud.cn/b7/7c/b77c8db5285fd0300507c793ac9ea922_907x430.png)
# 3、preg_replace();
执行正则替换。
替换字符串:
![](https://img.kancloud.cn/79/f8/79f819d5f3f6f26cbf0353ce7d7e614e_612x196.png)
带有子表达式:
![](https://img.kancloud.cn/f4/02/f402c71f0f776145dd6ed47a4b5c08ca_581x218.png)
替换数组:
# 4、案例:解决贪婪问题?
无论是JS中,还是PHP中,正则表达式的匹配模式默认都是贪婪模式。
![](https://img.kancloud.cn/84/93/8493cddd8db3a94679897b449c718363_684x129.png)
上述代码,查询至少一个字母。但是在实际匹配的过程中,匹配到一个a之后,并没有停止,而是继续向后匹配,得到一个连续的字符串。这就是贪婪模式。
下面在正则表达式后面加入?,表示非贪婪模式:
![](https://img.kancloud.cn/92/13/921355d26d628945093ea315e6ac24d1_897x153.png)
默认是贪婪模式,必须使用非贪婪模式的例子:
![](https://img.kancloud.cn/c7/15/c71589c2d9559a93c17c0aff77577c8c_981x135.png)
PHP中,强制非贪婪模式:
加入大写的修饰符U即可。
![](https://img.kancloud.cn/4c/5d/4c5db00f3f896998328878af3e347b7d_991x178.png)
# 5、PHP中使用正则注意点
PHP中的正则表达式除了//以外,外面还要加引号,这个引号要用**单引号**。
![](https://img.kancloud.cn/e2/08/e20831708100d428d1cb334ad86b029d_614x240.png)
- 第一天
- 一、学习目标
- 二、关于JavaScript
- 三、JS语法基础
- 四、变量
- 五、常量
- 六、运算符
- 七、数组
- 八、对象
- 九、数据类型
- 第二天
- 一、昨日复习
- 二、今日目标
- 三、数据类型转换
- 四、流程控制
- 五、函数基础
- 六、作用域
- 七、标准库(内置对象)
- 八、总结
- 第三天
- 一、昨日复习
- 二、今日目标
- 三、DOM介绍
- 四、元素(标签)节点查询操作
- 五、元素(标签)节点增删改操作
- 六、设置/获取元素的css样式
- 七、事件和事件对象
- 八、键盘keyCode对照表
- 第四天
- 一、昨日复习
- 二、今日目标
- 三、DOM之属性节点操作
- 四、DOM对象的通用属性
- 五、DOM获取元素的位置
- 六、事件绑定与移除
- 七、事件对象相关属性和方法使用
- 八、案例--可编辑的表格
- 第五天
- 一、今日目标
- 二、执行流程
- 三、定时器
- 四、闭包
- 五、案例
- 第六天
- 一、昨日回顾
- 二、今日目标
- 三、正则表达式概述
- 四、入门案例
- 五、正则语法
- 六、分组/捕获和反向引用
- 七、匹配中文(utf-8编码)
- 八、环视(断言/零宽断言/正向预测/负向预测)
- 九、正则对象的属性和方法
- 十、支持正则表达式的 String 对象的方法
- 十一、案例
- 十二、PHP中的正则表达式
- 第七天
- 一、昨日回顾
- 二、正则案例
- 三、PHP中的正则表达式
- 四、正则练习
- 五、仿淘宝评分小星星
- 六、标签页效果
- 七、横向下拉菜单
- 第八天
- 一、今日目标
- 二、面向对象编程
- 三、定义对象
- 四、对象相关操作
- 五、对象在内存中的存在形式
- 六、原型对象(关键)
- 七、定义对象进阶
- 八、函数进阶
- 第九天
- 一、昨日回顾
- 二、今日目标
- 三、Object
- 四、继承
- 五、this指向总结
- 六、案例(贪吃蛇)
- 第十天
- 一、今日目标
- 二、Ajax概述
- 三、工作原理
- 四、XMLHttpRequest对象介绍
- 五、使用Ajax的步骤
- 六、细节问题
- 七、JSON
- 八、Ajax中,服务器返回json格式的数据
- 九、案例--省市县三级联动
- 第十一天
- 一、昨日回顾
- 二、今日目标
- 三、完成省市县三级联动
- 四、优化省市县三级联动
- 五、服务器返回XML格式的数据
- 六、FormData对象
- 七、跨域请求
- 八、实现跨域请求
- 第十二天
- 一、Ajax回顾
- 二、今日目标
- 三、jQuery概述
- 四、快速入门
- 五、可编辑的表格
- 六、纵向导航菜单
- 七、横向导航菜单
- 八、标签页效果
- 第十三天
- 一、学习目标
- 二、杂项
- 三、jQuery中的事件
- 四、jQuery封装的Ajax
- 五、案例 -- 无刷新的分页
- 第十四天
- 一、昨日回顾
- 二、效果
- 三、跨域请求
- 四、文档操作
- 五、插件编写
- 六、自定义插件
- 七、第三方插件