正则表达式基本概念:
元字符:
元字符 | 描述 |
---|
. | 匹配任意单个字符除了换行符 |
[ ] | 匹配中括号里面的字符集 |
[^] | 匹配中括号里面字符集的取反 |
* | 匹配0个或多个*之前的符号 |
+ | 匹配1个或多个+之前的符号 |
? | 匹配0个或1个?之前的符号 |
{n,m} | 匹配前面的字符,字符集或者捕获组n到m次 |
(xyz) | (xyz)完全相等的字符串 |
| | 或运算符,匹配前面或者后面的字符 |
|转移字符,用于保留元字符 | |
^ | 从头开始匹配 |
$ | 从末端开始匹配 |
简写字符集
简写 | 描述 |
---|
\w | 匹配所有字母数字和下划线 |
\W | 匹配所有非字母数字下划线 |
\d | 匹配所有数字 |
\D | 匹配所有非数字 |
\s | 匹配空格 |
\S | 匹配非空格 |
\f | 匹配换页符 |
\n | 匹配换行符 |
\r | 匹配回车 |
\t | 匹配制表符 |
\v | 匹配垂直制表符 |
\p | 匹配回车换行 |
零宽度断言
先行断言和后发断言都属于非捕获组,仅仅作为一个约束条件
符号 | 描述 |
---|
?= | 前行断言,约束前面匹配到的字符 |
?! | 否定前行断言,排除约束前面匹配到的字符 |
?<= | 后发断言,约束后面匹配到的字符 |
?<! | 否定后发断言 |
常用的正则表达式:
校验数字
- 数字:^[0-9]*$
- n位的数字:^\d{n}$
- 至少n位的数字:^\d{n,}$
- m-n位的数字:^\d{m,n}$
- 0和非0开头的数字:^(0|[1-9][0-9])$
- 非0开头的最多带两位小数的数字:^[1-9][0-9]*(\.[0-9]{1,2})?$
- 带1-2位小数的正数或者负数:^(|-)(0|[1-9][0-9]*)(\.[0-9]{1,2})$
- 正数、负数和小数:^\-?\d+(\.\d+)?$
- 有两位小数的正实数:^\d+(\.\d{2})?$
- 非0的正整数:^[1-9][0-9]*$
- 非负整数:^\d+$
- 非正整数:^-[1-9]\d+|0)$
- 正浮点数:
校验字符
特定需求