正则

116 阅读4分钟

表达式全集

.     // 除 换行符 以外 的 所有字符
^     // 字符串 开头。  ^也匹配\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]

特殊需求表达式

作用表达式
Email^[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}$