首页 > php学习 > php基础知识 > 正则表达式
2016
12-16

正则表达式

元字符:

\d 匹配任意一个十进制数字,等价于[0-9]

\D 匹配任意一个除十进制数字以外字符,等价于[^0-9]

\s 匹配任意一个空白字符,比如换页符、换行符、回车符、制表符、垂直制表符

\S 匹配除空白字符以外的任何一个字符

\w 匹配任意一个数字或字母或下划线

\W 匹配除数字、字母、下划线以外的任意一个字符

\b 匹配一个字边界,即字与空格间的位置

\B 非字边界匹配

. 匹配除换行符以外的任意一个字符

* 匹配0次、或1次、或多次其前面的字符

+ 匹配1次或多次其前面的字符

? 匹配0次或1次其前面的字符,通过在 *或+ 之后再放一个?,表示从贪婪匹配转换为非贪婪匹配或者最小匹配。

{n} 表示其前面字符恰好出现n次

{n,} 表示其前面字符出现不少于n次

{n,m} 表示其前面的字符至少出现n次,最多出现m次

^或\A 匹配字符串开始位置

$或者\Z 匹配字符串的结束位置

| 匹配两个或多个模式

[] 匹配方括号中的任意一个字符

[^] 匹配除方括号中字符以外的任意一个字符

() 将括号中作为一个整体以便将其中的内容获取到

?: 非捕获性分组标识,括号中的内容会被捕获并返回,在括号中最前面加上?:则不捕获该分组数据

?= 前瞻行捕获。/goo(?=gle)/,匹配goo,但是goo后面必须紧跟着存在gle字符串才能匹配到goo并返回匹配到的字符串goo,并不是返回google。

?!功能和?=差不多,表示后面不能紧跟着指定字符才会捕获

反向引用

对一个正则表达式模式或部分模式两边添加圆括号将导致相关匹配存储到一个临时缓冲区中,所捕获的每个子匹配都按照在正则表达式模式中从左到右出现的顺序存储。缓冲区编号从 1 开始,最多可存储 99 个捕获的子表达式。每个缓冲区都可以使用 '\n' 访问,其中 n 为一个标识特定缓冲区的一位或两位十进制数。可以使用非捕获元字符 '?:'、'?=' 或 '?!' 来重写捕获,忽略对相关匹配的保存。

常见模式修正符

i 在和模式进行匹配时不区分大小写

g 表示全局匹配(php中默认全局匹配,JS中默认单次匹配)

m 多行匹配,如果目标字符串 中没有"\n"字符, 或者模式中没有出现^或$, 设置这个修饰符不产生任何影响

s 如果设定了此修正符,那么.将匹配所有的字符包括换行符

U 禁止贪婪匹配

最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。