共计 1184 个字符,预计需要花费 3 分钟才能阅读完成。
正向表达式就是所匹配要操作的字符串在前,表达式 pattern 在后;
反向表达式则是表达式 pattern 在前,所匹配要操作的字符串在后。
- exc(?:pattern)
匹配 pattern 但不获取匹配后果,也就是说这是一个非获取匹配,不进行存储供当前应用。这在应用或字符“(|)”来组合一个模式的各个局部是很有用。例如“factor(?:y|ies)”就是一个比“factory|factories”更简略的表达式
var ary = 'factorywork'
const reg = /factor(?:y|ies)/
const str = ary.replace(reg, '')
console.log('str:', str)
// str: work
// 和 (?=pattern) 的区别前者是组合各个局部
// str: ywork
- exc(?=pattern) (查找合乎 pattern 规定的 exc 局部)
正向必定预查,在任何匹配 pattern 的 exc 开始处匹配查找字符串。这是一个非获取匹配,该匹配不须要获取供当前应用。
var ary = 'factory123work123factory866'
const reg = /factory(?=\d)/g
const str = ary.replace(reg, '')
console.log('str:', str)
// str: 123work123866
- exc(?!pattern)
正向否定预查,在任何不匹配 pattern 的 exc 开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不须要获取供当前应用。
var ary = 'factorywork123factory866'
const reg = /factory(?!\d)/g
const str = ary.replace(reg, '')
console.log('str:', str)
// str: work123factory866
- (?<=pattern)exc
反向必定预查,与正向必定预查相似,只是方向相同。查找合乎表达式 pattern 的 exc。
var ary = 'factorywork123factory866'
const reg = /(?<=\d)factory/g
const str = ary.replace(reg, '') // 去掉数字前面 factory 局部
console.log('str:', str)
// str: factorywork123866
- (?<!pattern)exc
反向否定预查,与正向否定预查相似,只是方向相同。
var ary = 'thisfactorywork123factory866'
const reg = /(?<!\d)factory/g
const str = ary.replace(reg, '') // 去掉非数字后的 factory
console.log('str:', str)
// str: thiswork123factory866
正文完