正向表达式就是所匹配要操作的字符串在前,表达式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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。