正则表达式的先行断言及后行断言
一共分为四种
- (?=a) 零宽正向先行断言
- (?!a)零宽负向先行断言
- (?<=a)零宽正向后行断言
- (?<!a)零宽负向后行断言
专业术语听起来确实有点云里雾里,通俗的讲就是匹配某个位置,位置指某个字符的左边或右边,零宽指的是不替换字符左右的字符,而是插入该位置。
(?=a) 零宽正向先行断言
该正则匹配某字符前面的位置。
let reg = /(?=o)/g
let str = 'hello world'
let s = str.replace(reg,'A')
console.log(s) //输出hellAo wAorld
复制代码
经过上面的代码可以看到,A匹配到了o前面的位置
let reg = /l(?=o)/g
let str = 'hello world'
let s = str.replace(reg,'A')
console.log(s) //输出helAo world
复制代码
该正则匹配后面紧跟o的l字符,只有第二个l满足该条件,所以被替换</