正则复习总结

廖雪峰博客 - RegExp

1
2
3
4
\d // 数字
\w // 数字或字母(同时包含大小写)
\s // 匹配空白字符(空格,制表等)
. // (单个,占位1)匹配任意字符
1
2
3
*  // 任意个字符(包括0个)
+ // 至少一个字符
? // 0个或1个字符
1
2
3
4
5
6
7
| // (A|B) 匹配A或B

() // 分组Group, 一般结合exec使用

[] // 对指定字符集做并集处理

{} // 指定出现次数, {n},{n,m}。{3} 出现3次, {2,5} 出现2-5次
1
2
^ 头部
$ 尾部

案例:

1
2
3
4
5
6
7
let r1 = /\d{3}\s+\d{3,8}/

// 拆开来看
\d{3} // 固定出现三个数字
\s+ // 至少一个空白字符
\d{3,8} // 3-8个数字


精确匹配

1
[0-9a-zA-Z\_] //匹配数字字母

匹配规则

贪婪匹配

1
2
3
4
5
6
7
8
9
10
// 即尽可能匹配更多的字符

// (\d+) 默认采用贪婪匹配, 尽可能多匹配
var re = /^(\d+)(0*)$/;
re.exec('102300'); // ['102300', '102300', '']

// (\d+?) 禁用贪婪匹配, 尽可能少匹配
var re = /^(\d+?)(0*)$/;
re.exec('102300'); // ['102300', '1023', '00']

定义正则时标记

1
2
3
4
5
6
7

i 忽略大小写

m 多行匹配

g 全局匹配 类似于vim中的搜索, 可不断匹配, 通过读取正则对象的lastIndex变量获取当前索引


注意特殊字符需转义:

1
2
3
4
5
6
7
8
9
10
_ 下划线

- 横杆

\ 反斜杠

^

$

常用方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
// 字符串的split方法可以接受一个正则对象,用于分割字符串
'a,b;; c xx , xxx'.split(/[\s\,\;]+/)
// out: ['a', 'b', 'c', 'xx', 'xxx']


// 给定字符串,判断是否满足匹配
re.test = (str: string) => boolean


// 分组,结合 () 使用
var re = /^(\d{3})-(\d{3,8})$/;
re.exec('010-12345'); // ['010-12345', '010', '12345']
re.exec('010 12345'); // null

正则复习总结
http://example.com/2023/01/08/JavaScript基础 - 正则复习总结/
作者
Ray
发布于
2023年1月8日
许可协议