js正则

高级概念

捕获匹配

获取引用 (x)

  1. RegExp.$number
/a(bc)/g.exec('abc')
RegExp.$1 // bc

/a(bcd)/g.test('abcd')
RegExp.$1 // bcd

  1. replace $number
'
'.replace(/()/, '$1$2') //

非捕获匹配 (?:x)

  • 匹配 'x' 但是不记住匹配项

用途

  1. 使表达式作用于整个元素
/(?:abc){2}/.test('abc') // false
/(?:abc){2}/.test('abcabc') // true
  1. 提升性能
  • 捕获是消耗性能的 如果不需要记住匹配项 只想单纯括起来 不要用捕获

先行断言 x(?=y)

  • 匹配'x'仅仅当'x'后面跟着'y'.
/\S+(?=ing)/.test('running') // true
/\S+(?=ing)/.test('runn ing') // false

后行断言 (?<=y)x

  • 匹配'x'仅仅当'x'前面是'y'.
/(?<=is)\S+/.test('isLoading') // true
/(?<=is)\S+/.test('is Loading') // false

正向否定查找 x(?!y)

  • 仅仅当'x'后面不跟着'y'时匹配'x'
/runn(?!ing)/.test('running') // false
/runn(?!ing)/.test('runn ing') // true

反向否定查找 (?
  • 仅仅当'x'前面不是'y'时匹配'x'
/(?

这些等等

  • 正向肯定零宽断言
  • 正向否定零宽断言
  • 零宽断言
    • 零宽断言的意思是(匹配宽度为零,满足一定的条件/断言
    • 零宽断言用于查找在某些内容(但并不包括这些内容)之前或之后的东西

你可能感兴趣的:(js正则)