正则表达式是一种字符串搜索和匹配的工具
- $pattern = 正则表达式
- $subject = 匹配的目标数据
常见正则表达式函数
preg_match()和preg_match_all()
preg_match ( string $pattern , string $subject [, array &$matches )
preg_match_all ( string $pattern , string $subject , array &$matches )
--> 搜索 subject 与 pattern 给定的正则表达式的一个匹配。
preg_match 只匹配一次
preg_match_all 是全文匹配,即所有跟表达式一致的都找出来。
preg_replace()和preg_filter()
preg_replace ( mixed $pattern , mixed $replacement , mixed $subject )
preg_filter ( mixed $pattern , mixed $replacement , mixed $subject )
preg_filter 只返回匹配结果,不匹配的直接忽略,而 preg_replace 将不匹配的结果也一起返回。
preg_grep()
preg_grep( mixed $pattern , array $input )
--> 可以看成是阉割版的preg_filter()
preg_grep()只匹配,不替换
preg_split()
preg_split( $pattern,$subject )
--> 通过一个正则表达式分隔字符串(升级版的exploded()。
返回一个使用 pattern 边界分隔 subject 后得到的子串组成的数组。
preg_quote()
preg_quote ( string $str [, string $delimiter = NULL ] )
--> 转义正则表达式字符,向 $str 每个正则表达式语法中的字符前增加一个反斜线
preg_match –> 表单验证等
preg_replace –> 非法词语过滤等
正则表达式基本语法
界定符
表示一个正则表达式的开始和结束(/[0-9]/)
原子
可见原子:Uincode编码表中用键盘输出后肉眼可见的字符
- 标点
; " _ ? .
等等 - 英文字符数字
a-z,A-Z,0-9
- 汉字等其他语言文字
- 数理化公式符号
- 标点
不可见原子:Uincode编码表中用键盘输出后肉眼不可见的字符
- 换行符
\n
- 回车
\r
- 制表符
\t
- 空格
- 换行符
文字匹配可用转为uincode后搜索,不易出错
元字符
- 原子的筛选方式
- | 匹配两个或者多个分支选择(或,只要一个满足就匹配)
- [] 匹配方括号里的任意一个原子(可在每个区间:
[a-z],[A-Z],[0-9]
) - [^] 匹配除方括号中的原子之外的任意字符
- 原子的集合
- . 匹配除了换行符之外的任意字符
- \d 匹配任意一个十进制的数字,即
[0-9]
- \D 匹配任意一个非十进制的数字,即
[^0-9]
- \s 匹配一个不可见原子
- \S 匹配一个可见原子
- \w 匹配任意一个数字、字母或下行线
- \W 匹配任意一个非数字、字母或下行线
量词
- {n} 表示其前面的原子恰好出现n次
- {n,} 表示其前面的原子最少出现n次
- {n,m} 表示其前面的原子最少出现n次,最多出现m次
*
匹配0次,1次或者多次其前面出现的原子,即{0,}+
匹配1次或者多次其前面出现的原子,即{1,}?
匹配0次或1次其前面出现的原子,即{0,1}
边界控制与模式单元
- ^ 匹配字符串_开始_的位置
- $ 匹配字符串_结尾_的位置
模式单元
懒惰匹配和贪婪匹配
修正模式
- 贪婪匹配:匹配结果存在歧义时取其长(默认)
- 贪婪模式:匹配结果存在歧义取其短[只需在正则表达式的后面'/'加上'U',例如'/[0-9]/U';]
常见修正模式
- U 懒惰匹配
- i 忽略英文字母的大小写
- x 忽略正则表达式的空白符
- s 让元字符'.' 匹配包括换行符在内的所有字符
regexpal工具
正则表达式的工具:用于检测正则表达式是否正确