正则表达式
什么是正则表达式?
在编写处理字符串的程序或网页时,经常有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具,换句话说,正则表达式就是记录文本规则的代码。
常用工具
Regester、RegexBuddy、Javascript正则表达式在线测试工具
常用元字符
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白字符
\d 匹配数字
\b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
字符转义
如果想要查找元字符的话,必须使用 \ 来进行转义,如查找 \ ,得用 \
重复
限定符:指定数量的符号
* 重复 0 次 或 更多次
+ 重复 1 次 或 更多次
? 重复 0 次 或 1 次
{n} 重复 n 次
{n,} 重复 n 次 或 更多次
{n,m} 重复 n 到 m 次
[]
[aeiou] 匹配一个元音字母
[.?!] 匹配标点符号
\(?0\d{2}[)-]?\d{8}
匹配部分电话号码
注意:( 和 ) 也是元字符,如 断言
分支条件 |
分支条件:有几种规则,只要满足任意一种规则则匹配,使用 | 把不同的规则分开,如
0\d{2}-d{8} | 0\d{3}-\d{7} | \(0\d{2}\)[-]?\d{8} | 0\d{2}[-]?\d{8}
分组或子表达式
子表达式用 () 表示,如
((2[0-4]\d|25[0-5]|[01]?\d\d?).){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
匹配IP地址
反义
反义使用场景:查找不属于某类字符类的字符
\W 匹配任意 非字母、数字、下划线、汉字的字符
\S 匹配任意 非空白符的字符
\D 匹配任意 非数据的字符
\B 匹配 非单词开头或结束的位置
[^x] 匹配任意 除x以外的字符
[^aeiou] 匹配任意 非元音字母的字符
模式修正符
i 忽略大小写
g 全局匹配
m 多行识别
s 单行识别,回车换行视为普通字符
x 忽略模式中的空白
A 强制从目标字符串开头匹配
D 强制尾部无内容,若使用$,则不允许结尾有换行
U 禁止贪婪匹配,只匹配最近的一个字符串
e 配合PHP preg_replace()使用,将匹配来的字符串当正则表达式执行
其他
略,如断言等