# 正则表达式

# 语法

  • \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\' 匹配 "" 而 "(" 则匹配 "("

  • ^ 匹配输入字符串的开始位置

  • $ 匹配输入字符串的结束位置

  • + 号代表前面的字符必须至少出现一次(1次或多次)
    runoo+b,可以匹配 runoob、runooob、runoooooob 等

  • * 号代表前面的字符可以不出现,也可以出现一次或者多次(0次、或1次、或多次)
    runoo*b,可以匹配 runob、runoob、runoooooob 等

  • ? 问号代表前面的字符最多只可以出现一次(0次或1次)
    colou?r 可以匹配 color 或者 colour

  • . 匹配除换行符(\n、\r)之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用像"(.|\n)"的模式。

  • \d 匹配一个数字字符。等价于 [0-9]。

  • \D 匹配一个非数字字符。等价于 [^0-9]。

  • {n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。

  • {n,} n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。

  • {n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。

  • x|y 匹配 x 或 y。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。

  • [xyz] 字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。

  • [^xyz] 负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'、'l'、'i'、'n'。

  • [a-z] 字符范围。匹配指定范围内的任意字符。例如,'[a-z]' 可以匹配 'a' 到 'z' 范围内的任意小写字母字符。

  • [^a-z] 负值字符范围。匹配任何不在指定范围内的任意字符。例如,'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范围内的任意字符。

  • ( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 ( 和 )。

正则表达式-语法教程 (opens new window)

# 常用正则表达式

# 手机号码验证

//1开头的 11位数字 
var pattern = /^[1][0-9]{10}$/;
var pattern = /^1\d{10}$/;

/*
 * 1--以1为开头;
 * 2--第二位可为3,4,5,6,7,8,9中的任意一位;
 * 3--最后以0-9的9个整数结尾。
 */ 
var pattern = /^[1][3456789][0-9]{9}$/;

// 使用示例
function validatePhone(str) {
    var reg = /^[1][3,4,5,7,8][0-9]{9}$/;
    return reg.test(str);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 用户名正则

// 4到16位(字母,数字,下划线,减号)
var pattern = /^[a-zA-Z0-9_-]{4,16}$/;
// 输出 true
console.log(pattern.test("langzikp"));
1
2
3
4

# 密码强度正则

// 密码最少6位
var pattern = /^.{6,}$/// 密码最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符
var pattern = /^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/;

//输出 true
console.log("=="+pattern.test("caibaojian#"));
1
2
3
4
5
6
7
8

# 整数正则

// 正整数 正则
var pattern = /^[1-9]\d*$/;
// 负整数 正则
var pattern = /^-[1-9]\d*$/;
// 整数 正则
var pattern = /^-?[1-9]\d*$/;
// 非负整数(正整数 + 0) 正则
var pattern = /^[1-9]\d*|0$/;
// 非正整数(负整数 + 0) 正则
var pattern = /^-[1-9]\d*|0$/;
1
2
3
4
5
6
7
8
9
10

# 小数正则

// 正浮点数,不限制小数位
var pattern = /^\d+(\.\d+)?$/;
var pattern = /^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$/;

// 正浮点数,2位小数,通常用于金额验证
var pattern = /^(([1-9]{1}\d*)|(0{1}))(\.\d{1,2})?$/;

// 负浮点数,不限制小数位
var pattern = /^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$/;

// 浮点数
var pattern = /^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$/;

// 非负浮点数(正浮点数 + 0)
var pattern = /^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$/;

// 非正浮点数(负浮点数 + 0)
var pattern = /^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$/;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# Email正则

var pattern = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;

1
2

# 身份证号正则

var pattern = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
1

# 车牌号正则

var pattern = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/;
1

# 校验字符的正则

// 汉字
var pattern = /^[\u4e00-\u9fa5]{0,}$/;

// 英文和数字
var pattern = /^[A-Za-z0-9]+$/;
// 指定长度的英文和数字(4到40位长度)
var pattern = /^[A-Za-z0-9]{4,40}$/;

// 26个大写英文字母
var pattern = /^[A-Z]+$/;
// 26个小写英文字母
var pattern = /^[a-z]+$/;
// 26个英文字母
var pattern = /^[A-Za-z]+$/;

//  中文、英文、数字包括下划线:
var pattern = /^[\u4E00-\u9FA5A-Za-z0-9_]+$/;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# IPV4正则

var pattern = /^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$/;
1

# IPV6正则

var pattern = /^([\da-fA-F]{1,4}:){6}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$|^::([\da-fA-F]{1,4}:){0,4}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$|^([\da-fA-F]{1,4}:):([\da-fA-F]{1,4}:){0,3}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$|^([\da-fA-F]{1,4}:){2}:([\da-fA-F]{1,4}:){0,2}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$|^([\da-fA-F]{1,4}:){3}:([\da-fA-F]{1,4}:){0,1}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$|^([\da-fA-F]{1,4}:){4}:((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$|^([\da-fA-F]{1,4}:){7}[\da-fA-F]{1,4}$|^:((:[\da-fA-F]{1,4}){1,6}|:)$|^[\da-fA-F]{1,4}:((:[\da-fA-F]{1,4}){1,5}|:)$|^([\da-fA-F]{1,4}:){2}((:[\da-fA-F]{1,4}){1,4}|:)$|^([\da-fA-F]{1,4}:){3}((:[\da-fA-F]{1,4}){1,3}|:)$|^([\da-fA-F]{1,4}:){4}((:[\da-fA-F]{1,4}){1,2}|:)$|^([\da-fA-F]{1,4}:){5}:([\da-fA-F]{1,4})?$|^([\da-fA-F]{1,4}:){6}:$/;
1

菜鸟-正则表达式-教程 (opens new window)