快速记忆正则表达式
一、基础
.
任意字符(换行除外)\d
任意数字\D
任意非数字\w
任意数字字母下划线\W
数字、字母、下划线以外的任意字符\s
任意空白符\S
任意非空白符
二、空白符
\r
回车符\n
换行符\f
换页符\t
制表符\v
垂直制表符
三、量词
*
含义:0 到多次+
含义:1 到多次?
含义:0 到 1次{m}
含义:出现 m 次{m,n}
含义:m 到 n次{,n}
其中 m 不写代表 0,至多 n次{m,}
其中 n 不写代表无穷大,至少 m 次
四、范围
|
或,如 ab|bc 代表 ab 或 bc[...]
多选一,括号中任意单个元素[a-z]
匹配 a 到 z 之间任意单个元素(按 ASCII 表,包含 a,z)[^...]
取反,不能是括号中的任意单个元素
举例验证手机号
1[3456789]\d{9}
1[3-9]\d{9}
1[^012]\d{9}
五、边界
^
匹配行的开始,多行模式是,可以匹配任意行开头$
匹配行的结束,多行模式时,可以匹配任意行结尾\b
匹配单词边界\A
仅匹配整个字符串的开始,不支持多行模式\Z
仅匹配整个字符的结束,不支持多行模式
六、贪婪&非贪婪
- 贪婪:表示次数的量词,默认是贪婪的,默认尽可能多地去匹配
- 非贪婪:“数量” 元字符后加
?
(英文问号) 找出长度最小且满足要求的
七、环视
X(?<=Y)
匹配前面是 Y 的 XX(?<!Y)
匹配前面不是 Y 的 XX(?=X)
匹配后面是 Y 的 XX(?!Y)
匹配后面不是 Y 的 X
八、子组
- (正则) 将 regex 保存成一个子组
- (?p
正则) 命名子组,将 regex 保存成名称为 name 的子组 - (?:正则) 仅分组,不保存这个子组
- \分组编号 重复每个子组