乐趣区

关于正则表达式:正则表达式正向匹配与反向匹配

正向表达式就是所匹配要操作的字符串在前,表达式 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
退出移动版