PHP 正则表达式 总结
- 正则表达式的作用
分割、查找、匹配、替换字符串
- 分割符
- 正斜线(/)
- hash符号(#)
- 取反符号(~)
- 通用原子
\d
10进制 0到9\D
取反 除了 十进制的 0到9\w
数字字母下划线\W
除了数字字母下划线\s
空白符\S
除了空白符
- 元字符
.
匹配除换行符(\n、\r)之外的任何单个字符*
匹配前面的子表达式零次或多次+
匹配前面的子表达式一次或多次?
匹配前面的子表达式零次或一次{n}
n 是一个非负整数,匹配确定的 n 次{n,}
n 是一个非负整数,至少匹配n 次{n,m}
m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次^
匹配输入字符串的开始位置$
匹配输入字符串的结束位置[]
代表匹配一个集合里的一个元素,如[abc]代表匹配a或b或c()
匹配 ()内的内容,并获取
- 模式修正符
i
不区分大小写m
将字符串视为多行,不管是那行都能匹配s
将字符串视为单行,换行符作为普通字符e
e 配合函数preg_replace()使用 (php7 以取消)U
U 只匹配最近的一个字符串,不重复匹配x
x 将模式中的空白忽略A
强制从目标字符串开头匹配D
如果使用$限制结尾字符,则不允许结尾有换行u
模式字符串被当成 UTF-8 (匹配中文可以用到)
未完待续..............................
本作品采用《CC 协议》,转载必须注明作者和本文链接
分享一个我自己常用的
(?<name>)
用法,也有其他写法(?'name')
、(?P<name>)
, 参考手册例如要匹配 URL: domain.com/p1 的 page 页数
\/p(?<page_num>\d+)/
匹配到的数字将会存储在正则匹配到的变量数组当中,
如:
preg_match('/\/product_p(?<page>\d+)/',$_SERVER['REQUEST_URI'],$grep_temp)
取值则为:
$grep_temp['page']
望多用