js 正则断言

断言可以帮助我们查找某些内容时,对内容前和内容后的信息作为判断(但并不包括这些内容)(把内容前或后的信息作为判断依据但结果不包括这些内容,所以也被称为零宽断言)

比如我们要在字符串我是a我是b我是c我是d, 我是改为我不是,就可以使用零宽正先行断言(?=X)(X代表需要被匹配但不被包括的内容)

var str = "我是a我是b我是c我是d"
var reg = /我是(?=a)/
console.log(str.replace(reg,'我不是'))
// "我不是a我是b我是c我是d"

断言的写法

  • VVV(?=XXX) 零宽正先行断言————只有在断言XXX在VVV的后边时,才会继续匹配
  • VVV(?!XXX)零宽负先行断言————只有在断言XXX不在VVV的后边时,才会继续匹配
  • (?<=XX)VVV 零宽正后发断言————只有在断言XX在VVV的前边时,才会继续匹配
  • (? 零宽负后发断言————只有在断言XX不在VVV的前边时,才会继续匹配

需要注意

  • 断言不占用字符,不被包括在内容中
  • 断言一定要写在括号中()
  • 后发断言以前在js中不支持

你可能感兴趣的:(js 正则断言)