JavaScript-正则表达式

2020/7/5 JavaScript
// 创建正则
1. var j = /js/
2. var j = new RegExp('js')
----------------------------------------------------------------------------------------------
// 正则方法
1. j.test('str') // 查找字符串,有则返回true,没有返回false
2. j.exec('str') // 查找字符串,有则返回查找数组,没有返回null
----------------------------------------------------------------------------------------------
// 模式修饰符
1. i // ignorecase 忽略大小写
2. m // multiline 多行匹配
3. g // global 全局匹配
----------------------------------------------------------------------------------------------
// 字符类
1. 转义字符 “\”
2. 中文: \u4e00 - \u9fa5
3. 所有字符: /[a-zA-Z\u4e00-\u9fa5]
4. 除了\n以外的所有字符: /./
----------------------------------------------------------------------------------------------
// 别名
1. /[a-zA-Z0-9_]: /\w/,大写W为取反
2. /[0-9]/: /\d/,大写D为取反
3. / /: /\s/,匹配空格,大写S为取反
----------------------------------------------------------------------------------------------
// 重复
1. /\d{3}/: 匹配3个数字
2. /\d{1, 2}: 最多2,最少13. /\d{1, }: 最少1,最多无限,{1, }也可用 + 号代替
4. /\d{0, 1}: 最多1,最少没有,{0, 1}也可用 ? 号代替
5. /\d{0, }: 最少没有,最多无限,{0, }也可用 * 号代替
----------------------------------------------------------------------------------------------
// 选择 '|' 或
1. /html | css/: 二选一匹配
----------------------------------------------------------------------------------------------
// 分组 ()
1. 把需要的内容写在()里面
2. ()里会当做捕获的内容找出来,如果不想捕获则在内容前面加 ?:,: (?:内容)
3. 在正则可以直接用\1来表示第一个分组,/(ab)(cd)\1\2/,\1和\2为分组
----------------------------------------------------------------------------------------------
// 其他
1. 首匹配: /^js/: 以j开头
2. 尾匹配: /js$/: 以s结尾
3. 单词边界: /\bjs/
4. 前瞻匹配: /java(?=script)/: 匹配java,后面有跟script
5. 负向前瞻匹配: /java(?!script)/: 匹配java,后面有跟script
----------------------------------------------------------------------------------------------
// es6
1. y // 新增修饰符,连续匹配
2. u // 新增修饰符,字符处理
3. s // dotAll,加强对/./的匹配
4. reg.dotAll // 判断是否启用dotAll模式
5. reg.flags // 获取修饰符
6. 分组
   const s = str.match(/./)
   /(?<year>\d{4})-(?<month>\d{3})/
   s.groups.year
   s.groups.month
7. 先行断言: 先判断当前匹配模式是否满足 (/hello(?=\s world)/)
8. 后行断言: 先判断后面匹配模式是否满足 (/(?<=hello\s world)/)
----------------------------------------------------------------------------------------------
// 常用
1. 大于0或小于等于1可保留2为小数: /(^[1]$)|(^[0]\.[0-9]{1,2}$)/
2. 大于等于0或小于等于1可保留2为小数: /(^[0]$)|(^[1]$)|(^[0]\.[0-9]{1,2}$)/
3. 大于0保留两位小数: /(^[1-9]{1}[0-9]*$)|(^[0-9]*\.[0-9]{1,2}$)/
4. 大于0正整数: /^[0-9]\d*$/
5. 大于1正整数: /^[1-9]\d*$/
6. 1-99的正整数:/^[0-9]{1,2}$/
7. 验证手机号码正则:/^1(3|4|5|6|7|8|9)\d{9}$/
8. 验证邮箱正则:/^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/
9. 匹配所有html标签: /<\/?[^>]*>/g
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
Last Updated: 2024/7/31 12:57:25
    飘向北方
    那吾克热-NW,尤长靖