[总结]PHP正则表达式
来源:互联网 发布:淘宝的图片 编辑:程序博客网 时间:2024/06/06 18:34
一.正则表达式基础
1.什么是正则表达式
正则表达式是字符串搜索和匹配的工具。
2.无孔不入的正则表达式
我们日常生活中使用的很多电子设备,无时无刻不在跟正则表达式打交道。
1.windows的文件搜索功能:
*.zip就是一种正则表达式的匹配
2.注册时的手机号码格式的验证
3.正则表达式的使用范围
不管你是使用PHP,还是Java,还是Js.都会用到正则表达式。
正则表达式,基本通用于各个编程语言,各个操作系统。
二.PHP中的正则函数
1.preg_match()与preg_match_all()
preg_match($pattern,$subject,$arr)(只匹配一次,匹配到就结束)
preg_match_all($pattern,$subject,$arr)(匹配到字符串结束)pref
返回值:都返回匹配到的次数(未匹配到返回0)
<?php $pattern="/[0-9]/";$subject="weur3ui7";preg_match($pattern,$subject,$m1);preg_match_all($pattern,$subject,$m2);print_r($m1);//Array ( [0] => 3 )print_r($m2);//Array ( [0] => Array ( [0] => 3 [1] => 7 ))
2.preg_replace与preg_filter()
preg_replace($pattern,$replacement,$subject)
preg_filter($pattern,$replacement,$subject)
1.当$pattern,$replacement都是字符串的时候
<?php header("content-type:text/html;charset=utf-8");$pattern="/[0-9]/";$subject="weur3ui7";$replacement="中国";$str1=preg_replace($pattern,$replacement,$subject);$str2=preg_filter($pattern,$replacement,$subject);echo $str1."<br/>";//weur中国ui中国echo $str2."<br/>";//weur中国ui中国
2.当$pattern,$replacement都是数组的时候
<?php header("content-type:text/html;charset=utf-8");$pattern=array("/[0-3]/","/[3-9]/");$subject="weur3ui7";$replacement=array("中","国");$str1=preg_replace($pattern,$replacement,$subject);$str2=preg_filter($pattern,$replacement,$subject);echo $str1."<br/>";//weur中ui国echo $str2."<br/>";//weur中ui国
3.当$pattern、$replacement、$subject都是数组时。
<?php header("content-type:text/html;charset=utf-8");$pattern=array("/[0-3]/","/[3-9]/");$subject=array("weur","3ui7");$replacement=array("中","国");$str1=preg_replace($pattern,$replacement,$subject);$str2=preg_filter($pattern,$replacement,$subject);print_r($str1)."<br/>";//Array ( [0] => weur [1] => 中ui国 )print_r($str2)."<br/>";//Array ( [1] => 中ui国 )
于是,我们总结:
1.$pattern与$replacement可以都是字符串或都是数组(查找与替换要一一对应)
2.$subject可以为字符串或数组。当时数组是,对$subject的每一个元素都执行查找替换。
3.如果preg_filter()没有查找到元素,即没有匹配到,就不会返回结果;
但preg_replace()纵使没有匹配成功,也会返回原来的字符串。
3.preg_grep()
preg_filter() 返回 匹配到并且替换后的字符串
preg_grep() 返回 匹配到的字符串
两者共同点:过滤作用(没被$pattern匹配到的都过滤掉)
<?php header("content-type:text/html;charset=utf-8");$pattern='/[0-9]/';//这里的$pattern只可以是字符串类型,不可以是数组类型$subject=array("weur","3ui7");$str=preg_grep($pattern,$subject);print_r($str);//Array ( [1] => 3ui7 )
4.preg_split()
preg_split($pattern,$subject)
在$subject匹配到符合$pattern的,就做一次分割。返回分割后的字符串组成的数组。
<?php header("content-type:text/html;charset=utf-8");$pattern='/[0-9]/';$subject="你5好2吗?";$str=preg_split($pattern,$subject);print_r($str);//Array ( [0] => 你 [1] => 好 [2] => 吗? )
其实,就是一个升级版本的explode()函数
5.preg_quote()
将正则表达式的运算符进行转义。
<?php header("content-type:text/html;charset=utf-8");$pattern='/[0-9]/';$str=preg_quote($pattern);print_r($str);// /\[0\-9\]/
注意:基本上每个函数都是以$pattern开头
三.正则表达式基本语法
1.界定符:
标志着正则表达式的开始和结束
/正则表达式/(/为界定符)
还有两种:##、{}。
不过,还是以 / 最流行。
2.原子
正则表达式所匹配到的最小单位
可见原子:我们键盘上所能打出的可见的字符(如a-z 0-9 &)(<>)
不可见原子:存在但看不到的字符(如 \t制表符 \n回车符 空格符)
3.元字符
1.运算符号
| 选择
[] 匹配[]中的任意一个原子
[^] 匹配除了[]中的任意原子
※注意:[^0-9]匹配除了0-9之外的任意内容 ^[0-9]匹配开头是数字的内容
2.匹配一类原子
. 匹配除换行符之外的任一原子
\d 匹配任意十进制数[0-9]
\D 匹配任意非十进制数[^0-9]
\s 匹配任意非可见原子
\S 匹配任意可见原子
\w 匹配[a-z A-Z 0-9 _]
\W 和\w相反
4.量词
{m}恰好出现m次
{m,}出现m次以上
{m,n}出现m-n次
* 出现0次、1次或多次
+出现1次及以上
?出现0-1次
比如\d{5}表示连续出现的5个数字
5.边界控制与模式单元
5.1边界控制
^ 表示必须以^后面的某个字符开头
$ 表示必须以$前面的某个字符结尾
5.2模式单元
() 里面括的整体,算作一个原子。
四.修正模式
所谓修正模式,就好像手机里的情景模式。修正模式规定了正则表达式以怎样的方式来匹配。
1.贪婪模式与懒惰模式
贪婪模式是正则表达式默认的模式。(也就是当出现歧义的时候,匹配最多的情况)
懒惰模式要用U来指定。(也就是当出现歧义的时候,匹配最少的情况)
<?php header("content-type:text/html;charset=utf-8");$pattern1='/imooc.+123/';//贪婪模式$pattern2='/imooc.+123/U';//懒惰模式$subject="I love imooc__123123123";preg_match($pattern1,$subject,$arr1);preg_match($pattern2,$subject,$arr2);print_r($arr1);//imooc__123123123print_r($arr2);//imooc__123
2.忽略大小写
忽略大小写使用 i 模式
3.忽略空白
忽略空白使用 x 模式
空白包括:空格、换行、制表符。
4.使得点(.)匹配任意字符
使用s模式,可以使点(.)匹配任意字符,包括换行符。
五.常见的正则表达式
1.匹配手机号
/^1(3|4|5|7|8)\d{9}/
2.匹配e-mail地址
^\w+(.\w+)*@\w+.{1}(com|cn|com.cn|org)
可以匹配:
919696910@qq.com
eric.liu@qq.com
推荐一款正则表达式在线验证工具,可以实时检测正则表达式是否书写正确。
regexpal
或
regexpal
- php 正则表达式总结
- php正则表达式总结
- PHP正则表达式总结
- [总结]PHP正则表达式
- PHP正则表达式总结
- PHP正则表达式总结
- php 正则表达式总结
- php正则表达式总结2
- 总结php常用的正则表达式规范
- PHP正则表达式学习总结--1
- 关于PHP正则表达式的总结
- PHP正则表达式个人笔记总结
- php 正则表达式总结及应用
- 《PHP之正则表达式系统总结》
- Php常用文件操作函数,正则表达式,个人学习总结
- PHP正则表达式学习总结——重复/量词
- 【PHP进阶篇 未完】5.正则表达式--慕课网【学习总结】
- php的正则表达式
- CentOS 6.5搭建Gitlab(坎坷历程)
- iOS删除cell
- 深度剖析linux内核万能--双向链表,Hash链表模版
- Cache学习小结
- 直接操作语言对象
- [总结]PHP正则表达式
- Gearman GearmanClient 函数列表
- 每天学习十分钟20之git笔记②
- Charles 关闭之后 手机、苹果电脑能上QQ 但打不开网页原因
- struts2之namespace
- Object-C--->Swift之(八)类和结构体
- ssh--write failed broken pipe
- nc (netcat)
- LeetCode36. Valid Sudoku