Skip to content
本页目录

正则表达式

边界符

正则表达式中的边界符(位置符)用来提示字符所处的位置,主要有两个字符。

边界符说明
^表示匹配行首的文本(以谁开始)
$表示匹配行尾的文本(以谁结束)

如果 ^$ 在一起,表示必须是 精确匹配(不能多不能少,只能是这些)。

字符类

字符类表示有一系列字符可供选择,只要匹配其中一个就可以了。所有可供选择的字符都放在方括号内。

[] 方括号

javascript
/[abc]/.test('andy')
// true

正则含义:后面的字符串只要包含 abc 中任意一个字符,都返回 true

[-]  方括号内部 - 范围符

javascript
/^[a-z]$/.test('c')
// true

含义:方括号内部加上 - 表示范围,这里表示 az 26个英文字母都可以。

[^]  方括号内部 取反符 ^

javascript
/[^abc]/.test('andy')
// false

方括号内部加上 ^ 表示 取反,只要包含方括号内的字符,都返回 false

量词符

量词符用来设定 某个模式出现的次数

量词说明
*重复次数 ≥ 0
+重复次数 ≥ 1
?重复 0 次或 1 次
{n}重复 n 次
{n,}重复次数 ≥ n
{n,n}重复 n 次到 m 次

预定义类

预定类说明
\\d匹配 0-9 之间的任一数字,相当于 [0-9]
\\D匹配所有 0-9 以外的字符,相当于 [^0-9]
\\w匹配任意的字母、数字和下划线,相当于 [A-Za-z0-9_]
\\W除所有字母、数字和下划线以外的字符,相当于 [^A-Za-z0-9_]
\\s匹配空格(包括换行符、制表符、空格符等),相等于[\\t\\r\\n\\v\\f]
\\S匹配非空格的字符,相当于 [^\\t\\r\\n\\v\\f]

正则表达式参数

replace 中第一个参数为正则表达式的时候,还有一个 switch 参数可选。

javascript
/表达式/[switch]

switch(也称为修饰符)按照什么样的模式来匹配. 有三种值:

  • g:全局匹配
  • i:忽略大小写
  • gi:全局匹配 + 忽略大小写

常见正则表达式

javascript
var 电话正则 = /^1[34578]\d{9}$/g = 15901234567
// ^ 表示匹配行首的文本(以谁开始)
// [] 限制用那些字符
// \d 匹配 0-9 之间的任一数字,相当于 [0-9]
// {}表示重复的次数
// $ 表示匹配行尾的文本(以谁结束)
// g 表示全局模式 匹配所有出现的字符

var QQ = /^[1-9][0-9]{4,9}$/g
// QQ号最少5位最多10位
// {4,9} 表示重复的次数的范围 4-9次

var 十六进制颜色 = /#?[0-9a-fA-F]{6}/g
// #48D1CC
// ? 前面的字符可有可无

var Email = /^([A-Za-z0-9_\-\.]+)@([A-Za-z0-9_\-\.]+)\.([A-Za-z]{2,6})$/g
// - . 需要转义

var url = /^((https?|ftp|file):\/\/)?([\da-z\.\-]+)\.([a-z\.]{2,6})/g

var HTML = /^<([a-z]+)([^>]+)*(>(.*)<\/1>|\s+\/>)$/gm
// m 匹配多行
// * 0到无穷大
// \s 表示空格

var 日期 = /^[0-9]{4}-(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])$/g = 2021 - 10 - 01
// 1[0-2]  匹配10-12
// [12][0-9] 匹配 10-29
// 3[01] 匹配 30 31