表达式全集
. // 除 换行符 以外 的 所有字符
^ // 字符串 开头。 ^也匹配\n或\r之后的位置。
$ // 字符串 结尾。 $也匹配\n或\r之前的位置。
| // 或
? // 匹配 0 次 或 1 次。等价于 {0,1}。
* // 匹配 0 次 或 多次。等价于 {0,}。
+ // 匹配 1 次 或 多次。等价于 {1,}。
\ // 特殊字符转义
\b // 匹配 单词边界,也就是指单词和空格间的位置。 er\b 可以匹配 never 中的 er ,但不能匹配 verb 中的 er
\B // 匹配 非单词边界。 er\B 能匹配 verb 中的 er ,但不能匹配 never 中的 er
\d // 匹配 数字 等价于[0-9]
\s // 匹配 空格 等价于[\f\n\r\t\v]
\w // 匹配 字符 等价于[A-Za-z0-9_]
\D // 匹配 非数字 等价于[^0-9]
\W // 匹配 非字符 等价于[^A-Za-z0-9_]
\S // 匹配 非空格 等价于[^\f\n\r\t\v]
\f // 匹配 换页符。 等价于 \x0c 和 \cL
\n // 匹配 换行符。 等价于 \x0a 和 \cJ
\r // 匹配 回车符。 等价于 \x0d 和 \cM
\t // 匹配 制表符。 等价于 \x09 和 \cI
\v // 匹配 垂直制表符。等价于 \x0b 和 \cK
a|b // 匹配 a 或 b。
{n} // 匹配 n次
{n,} // 匹配 n次 以上
{m,n} // 最少 m次,最多 n次 匹配。
[abc] // 匹配 a、b、c 中的一个字母。
[^abc] // 匹配 除了 a、b、c 中的其他字母。
(expr) // 捕获 expr 子模式,以 $1 使用它。
(?:expr) // 忽略捕获的子模式。不能以 $1 使用它。
(?=expr) // 正向肯定预查 Windows(?=95|98|NT|2000)
(?!expr) // 正向否定预查 Windows(?=95|98|NT|2000)
(?<=expr) // 反向肯定预查 expr。Windows(?=95|98|NT|2000)
(?<!expr) // 反向肯定预查 expr。Windows(?=95|98|NT|2000)
\xn // x 十六进制,n 为十六进制转义值。例如,\x41匹配A。\x041则等价于\x04&1。正则表达式中可以使用ASCII编码。
\nml // 如果 n 为八进制数字(0-3),且 m 和 l 均为八进制数字(0-7),则匹配八进制转义值nml。
\uxxxx // 查找以十六进制数 xxxx 规定的 Unicode 字符。。例如,\u00A9匹配版权符号 ©
\num // num 是 一个正整数。(Windows)\1 匹配 WindowsWindows。
\n // 标识一个八进制转义值或一个向后引用。如果n之前至少n个获取的子表达式,则n为向后引用。否则,如果n为八进制数字(0-7),则n为一个八进制转义值。
\nm // 标识一个八进制转义值或一个向后引用。如果nm之前至少有nm个获得子表达式,则nm为向后引用。如果nm之前至少有n个获取,则n为一个后跟文字m的向后引用。如果前面的条件都不满足,若n和m均为八进制数字(0-7),则nm将匹配八进制转义值nm。
常用正则表达式
校验数字的表达式
\d+ // 非负整数
\d{n} // n位的数字
\d{n,} // 至少n位的数字
\d{m,n} // m-n位的数字
[1-9]\d+\.\d{1,2} // 非零开头的最多带两位小数的数字
-?\d+\.\d{1,2} // 带1-2位小数的正数或负数
(\-|\+)?\d+(\.\d+)? // 正数、负数、和小数
[0-9]+(\.[0-9]{2})? // 有两位小数的正实数
[0-9]+(\.[0-9]{1,3})? // 有1~3位小数的正实数
[1-9]\d* // 非零的正整数
-[1-9]\d* // 非零的负整数
\d+ // 非负整数
-[1-9]\d*|0 // 非正整数
\d+\.\d+ // 正浮点数
-\d+\.\d+ // 负浮点数
-?\d+\.\d+ // 浮点数
校验数字的表达式
| 作用 | 表达式 |
|---|---|
| 数字 | ^[0-9]*$ |
| n位的数字 | ^\d{n}$ |
| 至少n位的数字 | ^\d{n,}$ |
| m-n位的数字 | ^\d{m,n}$ |
| 零和非零开头的数字 | ^(0|[1-9][0-9]*)$ |
| 非零开头的最多带两位小数的数字 | ^([1-9][0-9]*)+(.[0-9]{1,2})?$ |
| 带1-2位小数的正数或负数 | ^(-)?\d+(.\d{1,2})$ |
| 正数、负数、和小数 | ^(-|+)?\d+(.\d+)?$ |
| 有两位小数的正实数 | ^[0-9]+(.[0-9]{2})?$ |
| 非负整数 | ^\d+$ 或 ^[1-9]\d*|0$ |
| 非正整数 | ^-[1-9]\d*|0$ |
| 浮点数 | ^(-?\d+)(.\d+)?$ |
| 正浮点数 | ^[1-9]\d*.\d*|0.\d*[1-9]\d*$ |
| 负浮点数 | ^-([1-9]\d*.\d*|0.\d*[1-9]\d*)$ |
校验字符的表达式
| 作用 | 表达式 |
|---|---|
| Unicode编码中的汉字范围 | ^[\u4e00-\u9fa5]{0,}$ |
| 中文字符 | [\u4e00-\u9fa5] |
| 匹配双字节字符(包括汉字在内) | [^\x00-\xff] |
| 大写英文 | ^[A-Z]+$ |
| 小写英文 | ^[a-z]+$ |
| 英文和数字 | ^[A-Za-z0-9]+$ |
| 英文、数字和下划线 | ^\w+$ |
| 中文、英文、数字 | ^[\u4E00-\u9FA5A-Za-z0-9]+$ |
| 中文、英文、数字和下划线 | ^[\u4E00-\u9FA5A-Za-z0-9_]+$ |
| 双字节字符(包括汉字在内) | [^\x00-\xff] |
特殊需求表达式
| 作用 | 表达式 |
|---|---|
| ^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$ | |
| 身份证号码 | ^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$ |
| 手机号码 | ^1(3|4|5|6|7|8|9)\d{9}$ |
| 固定电话(XXX-XXXXXXX XXXX-XXXXXXXX) | ((\d{3,4})|\d{3,4}-|\s)?\d{8} |
| 域名 | ^(https?://)?([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}(/) |
| IPv4 | ((?:(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d)) |
| HTML标签 | <(\S*?)[^>]*>.*?|<.*? /> |
| 日期 | ^\d{4}-\d{1,2}-\d{1,2} |
| 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线) | ^[a-zA-Z]\w{5,17}$ |
| 密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在 8-10 之间) | ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,10}$ |
| 密码(必须包含大小写字母和数字的组合,可以使用特殊字符,长度在8-10之间) | ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$ |