正则表达式基本概念:
元字符:
| 元字符 | 描述 |
|---|---|
| . | 匹配任意单个字符除了换行符 |
| [ ] | 匹配中括号里面的字符集 |
| [^] | 匹配中括号里面字符集的取反 |
| * | 匹配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)$
- 正浮点数: