# 工作学习笔记
# 正则 exce()
参数 1 :要匹配的字符串
返回值 : 如果匹配失败,exec()
方法返回 null
(opens new window),并将正则表达式的 lastIndex
(opens new window) (匹配索引)重置为 0。
如果匹配成功,exec()
方法返回一个数组,并更新正则表达式对象的 lastIndex
(opens new window) 属性。完全匹配成功的文本将作为返回数组的第一项,从第二项起,后续每项都对应一个匹配的捕获组。数组还具有以下额外的属性 (opens new window):
将 正则 ()作为一个匹配组,第一项作为整个正则
参数1:第一项结果为 完整的正则匹配结果
参数2:将符合 第一组正则 (\d+)
匹配到的结果作为第二个参数
?: 忽略一组匹配的结果
参数3:将第四组(.\d+)
正则匹配到的结果放入第三个参数
示例1
/(\d+)(?:(.\d+)|)/.exec('100.2') // 输出 ['100.2' ,'123' , '.2' , index: 0 , groups: undefined , input:'123.2']
# 正则?:
忘记匹配?:后的结果,不将它划入匹配结果中
**非捕获组:**匹配 “x”,但不记得匹配。不能从结果数组的元素中收回匹配的子字符串 ([1], ..., [n]
) or from the predefined RegExp
object's properties ($1, ..., $9
).
reg=/abc(?:de|fg)/g
console.log(...str.matchAll(reg))
// ['abcde'] ['abcfg']
reg=/abc(de|fg)/g
str='abcde12abcfg'
console.log(...str.matchAll(reg))
// ['abcde', 'de'] ['abcfg', 'fg']
# 正则的前瞻运算
从 某个固定的位置 开始向前查找,不消耗字符,只要符合?=
的 就作为符合条件的匹配。
/(\d{3})(?=\d)/g
示例:
1: 'abcd'.replace(/([a-z]{3})(?=\d)/g , '$1'+',') // 'abcd'
2: 'abc1'.replace(/([a-z]{3})(?=\d)/g , '$1'+',') // 'abc,1'
3: '1231'.replace(/(\d{2})(?=(\d))/g , '$1' + '?') // '12?31'
← 计算机网络