一共分为四种正则表达式
专业术语听起来确实有点云里雾里,通俗的讲就是匹配某个位置,位置指某个字符的左边或右边,零宽指的是不替换字符左右的字符,而是插入该位置。spa
该正则匹配某字符前面的位置。指针
let reg = /(?=o)/g
let str = 'hello world'
let s = str.replace(reg,'A')
console.log(s) //输出hellAo wAorld
复制代码
通过上面的代码能够看到,A匹配到了o前面的位置code
let reg = /l(?=o)/g
let str = 'hello world'
let s = str.replace(reg,'A')
console.log(s) //输出helAo world
复制代码
该正则匹配后面紧跟o的l字符,只有第二个l知足该条件,因此被替换console
与上面的(?!a)相反,这个表达式匹配后面没有a字符的位置class
let reg = /(?!l)/g
let str = 'hello'
let s = str.replace(reg,'A')
console.log(s) //输出AhAellAoA
复制代码
该正则匹配后面没有字符l的位置,所以除了两个l字母前,均插入了A字符总结
let reg = /l(?!o)/g
let str = 'hello'
let s = str.replace(reg,'A')
console.log(s) //输出heAlo
复制代码
该正则表示匹配后面无o字符的l字符,由于只有第一个l后面没有o,所以被替换移动
与(?=a)位置相反,匹配a字符后面的位置di
let reg = /(?<=l)/g
let str = 'hello'
let s = str.replace(reg,'A')
console.log(s) //输出helAlAo
复制代码
该正则匹配了全部l后面的位置,在该位置插入A字符copy
let reg = /(?<=l)o/g
let str = 'hello'
let s = str.replace(reg,'A')
console.log(s) //输出hellA
复制代码
该正则匹配前面为l的o字符
与(?!a)位置相反,匹配前面没有a字符的位置
let reg = /(?<!l)/g
let str = 'hello'
let s = str.replace(reg,'A')
console.log(s) //输出AhAeAlloA
复制代码
该正则匹配全部前面没有l的位置
let reg = /(?<!e)l/g
let str = 'hello'
let s = str.replace(reg,'A')
console.log(s) //输出helAo
复制代码
只有第二个l前面没有e所以,第二个被替换