正则 reg 中 /number 的用法
# 释义
1、正则表达式中“\number”表示反向引用,表示引用一个捕获组,需要和小括号“()”一起使用
2、正则捕获组的下标从 0 开始,下标为 0 的组是整个表达式,下标为 1 的表示从左到右开始的第一个左括号所包含的值,后面的数字以此类推
3、捕获组在匹配成功时,会将子表达式匹配到的内容,保存到内存中一个以数字编号的组里,可以简单的认为是对一个局部变量进行了赋值,这时就可以通过反向引用的方式,引用这个局部变量的值。
4、反向引用必须要与捕获组一同使用,如果没有捕获组,而使用了反向引用的语法,不同语言的处理方式不一致,有的语言会抛异常,有的语言会当作普通的转义处理
# 例子
let r = 'AAABBCCAAAA DDE666FF'
// 注:
// * 表示零个或多个,所以该匹配值可以有零个或者多个
// + 表示至少一个或多个,所以该匹配值至少一个或者多个
// 注意 \w 包含数字,以下都要注意这一点
// 正常匹配单个字符
let match1 = r.match(/(\w)/g)
console.log('match1 :', match1)
// match1 : [ 'A','A','A','B','B','C','C','A','A','A','A','D','D','E','6','6','6','F','F' ]
// 匹配模式:单个字符 + 第一个括号中的匹配值 ( * —— 有零个或者多个)
let match2 = r.match(/(\w)\1*/g)
console.log('match2 :', match2)
// match2 : [ 'AAA', 'BB', 'CC', 'AAAA', 'DD', 'E', '666', 'FF' ]
// 匹配模式:单个字符 + 第一个括号中的匹配值 ( + —— 至少一个或者多个)
let match3 = r.match(/(\w)\1+/g)
console.log('match3 :', match3)
// match3 : [ 'AAA', 'BB', 'CC', 'AAAA', 'DD', '666', 'FF' ]
// 匹配模式:单个字符 + 单个数字 // 注意 \w 包含数字,以下都要注意这一点
let match4 = r.match(/(\w)(\d)/g)
console.log('match4 :', match4)
// match4 : [ 'E6', '66' ]
// 匹配模式:单个字符 + 单个数字 + 第一个括号中的匹配值 ( * —— 有零个或者多个)
let match5 = r.match(/(\w)(\d)\1*/g)
console.log('match5 :', match5)
// match5 : [ 'E6', '66' ]
// 匹配模式:单个字符 + 单个数字 + 第一个括号中的匹配值 ( + —— 至少一个或者多个)
let match6 = r.match(/(\w)(\d)\1+/g)
console.log('match6 :', match6)
// match6 : [ '666' ]
// 匹配模式:单个字符 + 单个数字 + 第一个括号中的匹配值 ( * —— 有零个或者多个)+第二个括号中的匹配值 ( * —— 有零个或者多个)
let match7 = r.match(/(\w)(\d)\1*\2*/g)
console.log('match7 :', match7)
// match7 : [ 'E666' ]
// 匹配模式:单个字符 + 单个数字 + 第一个括号中的匹配值 ( * —— 有零个或者多个)+第二个括号中的匹配值 ( + —— 至少一个或者多个)
let match8 = r.match(/(\w)(\d)\1*\2+/g)
console.log('match8 :', match8)
// match8 : [ 'E666' ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# 参考资料
编辑 (opens new window)
上次更新: 10/4/2022, 8:52:49 AM
- 01
- 搭配 Jenkins 实现自动化打包微前端多个项目09-15
- 02
- 自动化打包微前端多个项目09-15
- 03
- el-upload 直传阿里 oss 并且显示自带进度条和视频回显封面图06-05