正则表达式就是用某种模式去匹配一类字符串的一种公式。
PHP中的正则表达式
PHP中有两套正则函数preg和ereg(5.3以后不再推荐使用)
正则表达式的组成
- 分隔符:除了字幕、数字、反斜线、空白字符之外的任何字符
- 表达式:由一些特殊字符和非特殊字符串组成
- 修饰符:用于开启或者关闭某种功能
正则表达式中的元字符
- 常用元字符
元字符 | 描述 |
---|---|
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母、数字、下划线、汉字 |
\s | 匹配任意空白符 |
\d | 匹配数字 |
\b | 匹配单词的开始或结束 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
- | 表示范围 |
[] | 匹配括号中任意一个字符 |
*、+、? | 量词 |
- 例子
正则表达式 | 匹配内容 |
---|---|
\ba\w*\b | 匹配以字母a开头的单词 |
\d+ | 匹配1个或更多连续的数字 |
\b\w{6}\b | 匹配刚好6个字符的单词 |
注意:单词指的是字母或者数字
- 量词
限定符代码 | 描述 |
---|---|
* | 重复0次或更多次 |
+ | 重复一次或更多次 |
? | 重复0次或一次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
- 转义字符:\
- 反义
元字符 | 描述 |
---|---|
\W | 匹配不是字母、数字、下划线、汉字 |
\S | 匹配非空白符 |
\D | 匹配非数字 |
\B | 匹配不是单词的开始或结束的位置 |
[^x] | 匹配除了x以外的字符 |
[^aeiou] | 匹配除了aeiou之外的字符 |
注意:反义不可多用,因其扩大了匹配范围,可能匹配到不是原来要的
- 分支:|
例子:
(c|h|f|to)at : 匹配cat,hat,fat,toat
[ch]at == (c|h)at
注意: 括号可有可无,但是正则匹配的规则是:从左到右测试每个条件,如果满足了某个分支,就不会再考虑其他分支