js正则

高级概念

捕获匹配

获取引用 (x)

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

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

  1. replace $number
'<div class="123">'.replace(/(<div)[\s\S]*(>)/, '$1$2') // <div>

非捕获匹配 (?: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

反向否定查找 (?<!y)x

  • 仅仅当'x'前面不是'y'时匹配'x'
/(?<!is)Loaded/.test('isLoaded') // false
/(?<!is)Loaded/.test('is Loaded') // true

这些等等

  • 正向肯定零宽断言
  • 正向否定零宽断言
  • 零宽断言
    • 零宽断言的意思是(匹配宽度为零,满足一定的条件/断言
    • 零宽断言用于查找在某些内容(但并不包括这些内容)之前或之后的东西
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 正则表达式中的特殊字符 '^'号 匹配输入的开始。如果多行标志被设置为true,那么也匹配换行符后紧跟的位置。 例...
    angelwgh阅读 431评论 0 0
  • 前言 正则函数总是用的迷迷糊糊,有时直接用现成的,但是不符合我的作风,抽时间做了一次正则的梳理推荐文章:http:...
    BULL_DEBUG阅读 1,510评论 0 2
  • 以前后端同事爬了别人家的网站,需要分析文本,他是想要知道如何通过ClassName定位,后来尽然是让我写个正则匹配...
    Ricoywang阅读 863评论 0 7
  • 正则表达式功能: 测试字符串的某个模式。例如对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信...
    DecadeHeart阅读 625评论 0 1
  • @(javascript)[js正则表达式] [toc] JS正则表达式 正则表达式一直是一个令人头疼但却又是十分...
    踏浪free阅读 438评论 0 1