正则表达式正向匹配与反向匹配

正向表达式就是所匹配要操作的字符串在前,表达式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. (? 反向否定预查,与正向否定预查类似,只是方向相反。
    var ary = 'thisfactorywork123factory866'
    const reg = /(?

你可能感兴趣的:(正则表达式)