正则表达式
正则表达式是一种字符串搜索和匹配的工具。
正则表达式基本语法
界定符
表示一个正则表达式的开始和结束
- /[0-9]/、#[0-9]#、{[0-9]}中的/、#、{ 都可以做界定符。
原子
Unicode编码输出的字符单位
原子的筛选方式
- | 匹配两个或多个分支选择
- [] 匹配方括号中的任意一个原子
- [^] 匹配除方括号中的原子之外的任意字符
原子集合的筛选方式
- . 匹配除换行符之外的任意字符
- \d 匹配任意一个十进制数字
- \D 匹配任意一个非十进制数字
- \s 匹配一个不可见原子
- \S 匹配一个可见原子
- \w 匹配任意一个数字、字母或下划线
- \W 匹配任意一个非数字、字母或下划线的字符
量词
- {n} 表示其前面的原子恰好出现n次
- {n,} 表示其前面的原子最少出现n次
- {n,m} 表示其前面的原子最少出现n次,最多出现m次
-
- 匹配0次、1次或者多次其之前的原子
-
- 匹配1次或多次其之前的原子
- ? 匹配0次或1次其之前的原子
边界控制
- ^ 匹配字符串开始位置
- $ 匹配字符串的结束位置
模式单元
修正模式
例:/ddffg/iU (最后一个字符为修正符,修正符可以为多个)
贪婪匹配
匹配结果存在歧义时取其长(PHP默认修正模式)
U懒惰匹配
匹配结果存在歧义时取其短
u忽略英文字母大小写
i
-忽略空白符
x
常用正则表达式
- 非空 .+
- 匹配保留两位小数的浮点数 \d+.\d{2}$
- email地址匹配 ^\w+(.\w+)*@\w+(.\w+)+$
- URL地址匹配 ^(https?://)?(\w+.)+[a-zA-Z]+$
PHP中的正则表达式函数
- preg_match(
pattern,
subject,[array & $matches])
- return 匹配到的结果的次数(0或者1)。
- preg_match_all(
pattern,
subject,array & $matches);
- return 匹配到的结果的次数(0或1或2或…)。
- preg_replace( pattern, replacement,$subject)
- preg_filter( pattern, replacement,$subject)
- preg_grep( pattern,array input)
- preg_slip( pattern, subject)
- preg_quote($str)