第7章正则表达式
1. 什么是正则表达式
正则表达式就是一种描述字符串结构的语法规则
2. 为何须要正则表达式?
由于须要对用户提交的信息进行验证,若是不验证的话,有可能用户提交的就是垃圾信息
3. PHP里面的正则表达式函数库
在PHP里面支持2套正则表达式函数库,一套是POSIX,另一套是PCRE。比起POSIX,如今更多的是使用PCRE这一套正则表达式函数。缘由有两个:PCRE函数库的兼容性更好,而且效率高。
咱们的正则表达式若是不配合正则表达式函数的话,它就只是一个普通的字符串。因此正则表达式必定要配合正则表达式函数来使用
4. 正则表达式语法
任何一个正则表达式的组成无外乎由4个部分组成 ① 定界符 ② 原子 ③ 元字符 ④ 模式修正符
定界符
咱们所写的正则表达式都须要放在定界符里面。通常常见的定界符为两个斜杠//
可是,咱们的定界符不单单只有// 任何除了数字,字母,反斜杠\ 之外的字符均可以成为正则表达式的定界符
原子
原子是正则表达式里面最基本的组成单位。换句话说,一个正则表达式里面,能够没有元字符,能够没有模式修饰符,可是不能没有原子。
原子大体能够分为5大类
1)普通字符做为原子
所谓普通字符,就是大小写字母,数字等字符
例如:
“/5/” 用于匹配字符串中是否有5这个字符出现
“/php/” 用于匹配字符串中是否有php这个字符串出现
2)特殊字符做为原子
在正则表达式里面,有一些字符是有特殊含义,例如* +?.
若是咱们就只想匹配普通的*+?. 的话,必须转义。转义字符是一个反斜杠\
3)非打印字符做为原子
所谓非打印字符,就是字符串中的控制符号,例如:空格,回车,制表符(Tab)
4)使用通用型字符做为原子
所谓通用型字符,就是指一个原子能够匹配多个字符。
\d:匹配任意一个十进制数字0-9
\D:匹配任意一个除了十进制之外的字符
\s:匹配任意一个非打印字符
\S:除了非打印字符之外的字符能够被匹配上
\w:匹配字母数字和下划线
\W:匹配除了数字,字母下划线之外字符
5)自定义原子表做为原子
自定义原子表经过一对[ ]
能够在[]里面加上一个^ 表明不能匹配方括弧里面的字符
还能够在方括弧里面使用” - “ ,表明的是一个范围
元字符
所谓元字符,就是用于构建正则表达式的具备特殊含义的字符。例如:+*?
1)限定符
所谓限定符,就是限定一个原子必须出现多少次:* + ? {n} {n,} {n,m}
*:表明一个原子出现0次或者屡次
+:表明一个原子出现1次或者屡次
?:表明一个原子要么出现1次,要么出现0次
{n}:前面的原子出现几回
{n,}:前面的原子至少出现n次
{n,m}:前面的原子至少出现n次,最多m次php
*:{0,}
+:{1,}
?:{0,1}
2)边界限定符
^:字符串是否以某一个字符串开头
$:字符串是否以某一个字符串结尾
\b和\B
\b :是边界
\B : 不是边界
3)点.
能够匹配任何一个除了换行符之外的字符
4)模式选择符 |
5) 模式单元
所谓模式单元,就是可使用()将多个原子组合成一个更大的原子
One:将小原子组合成了一个大原子
Two:改变元字符的优先级
Three:开启了独立的模式,会将小括号里面的内容存入到缓冲区里面
被存入到缓冲区里面的内容能够经过\1 \2 \3来进行反向引用
缓冲区是能够被跳过的,经过一个?:来跳过缓冲区
6)元字符的优先级
④ 模式修正符
所谓模式修正符,是对正则表达式功能的一种扩充,加强了正则表达式的处理能力,模式修正符通常是写在定界符外面
i:忽略大小写
M:能够匹配多行,换句话说,能够多行查找
S:主要功能是用来加强点. 的功能
X:能够忽略空格
正则表达式函数
Preg_match():查看一个字符串是否和一个正则表达式匹配,匹配就返回TRUE,不然返回FALSE正则表达式
Preg_match_all():第一次匹配成功以后也不会像Preg_match()同样中止搜索,而是会继续日后面搜索符合要求的字符串数组
Preg_grep():接受两个参数,一个是正则表达式,一个是数组,将符合条件的元素提出来返回一个新的数组,返回的新数组里面的元素下标不变函数
Preg_repalce(正则,替换的字符串,原来的字符串)字符串
除了使用正则的方式,使用字符串替换函数也是能够实现字符串替换的
Str_replace(“要替换的字符串”,“新的字符串”,要操做的字符串,[替换的次数])字符串处理
使用正则和字符串替换函数均可以实现字符串的替换,可是正则的功能比字符串替换函数要强大一些,可是功能强大的背后,是效率会下降
若是能够是字符串替换函数搞定的事儿,就不要去用正则
字符串分割
Preg_split()
字符串处理
Explode(分隔符,字符串)
Implode():将一个数组组合成一个字符串
Implode(链接符号,数组)it