正向表达式就是所匹配要操作的字符串在前,表达式pattern在后;
反向表达式则是表达式pattern在前,所匹配要操作的字符串在后。
  1. 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
  1. 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
  1. exc(?!pattern)
    正向否定预查,在任何不匹配pattern的exc开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不须要获取供当前应用。
    var ary = 'factorywork123factory866'    const reg = /factory(?!\d)/g    const str = ary.replace(reg, '')    console.log('str:', str)    // str: work123factory866
  1. (?<=pattern)exc
    反向必定预查,与正向必定预查相似,只是方向相同。查找合乎表达式pattern的exc。
    var ary = 'factorywork123factory866'    const reg = /(?<=\d)factory/g    const str = ary.replace(reg, '') // 去掉数字前面factory局部    console.log('str:', str)    // str: factorywork123866
  1. (?<!pattern)exc
    反向否定预查,与正向否定预查相似,只是方向相同。
    var ary = 'thisfactorywork123factory866'    const reg = /(?<!\d)factory/g    const str = ary.replace(reg, '') // 去掉非数字后的factory    console.log('str:', str)    // str: thiswork123factory866