美文网首页
regrex扩展

regrex扩展

作者: 陶六六 | 来源:发表于2018-08-20 00:43 被阅读0次

    正则的扩展

    1. u修饰符 支持unicode字符匹配

      • .字符能匹配unicode字符
      • unicode字符表示法\u{}
      • 量词能准确匹配双字符unicode字符数量
      • \S等预设字符集包含unicode字符
      • i修饰符能匹配字形相近unicode字符
      • \p{} \P{} 可以匹配指定unicode字符集
    2. y修饰符 全局头部匹配

    3. s修饰符 .字符增加匹配换行符

    4. RegRex原型属性

      • RegExp.prototype.unicode 是否设置u修饰符
      • RegExp.prototype.sticky 是否设置y修饰符
      • RegExp.prototype.dotAll 是否设置s修饰符
      • RegExp.prototype.flags 返回所有设置的修饰符
    5. 环视

          /x(?=y)/.exec('xxyy') //正向肯定环视 [x,index:1]
          /x(?!y)/.exec('xxyy') //正向否定环视 [x,index:0]
          /(?<=x)y/.exec('xxyy') //逆向肯定环视 [y,index:2]
          /(?<!x)y/.exec('xxyy') //逆向否定环视 [y,index:3]
      
          'xxyyy'.replace(/(?<=y)y/g,'x')
          //匹配以原始串匹配,环视可以在当前起始位置之前 xxyxx
      
          /(?<=(\d+)(\d+))$/.exec('1053') // ["", "1", "053"]
          // 逆向环视+字符自右向左贪婪
          /^(\d+)(\d+)$/.exec('1053') // ["1053", "105", "3"]
          // 普通匹配+字符自左向右贪婪
      
          /(?<=(o)d\1)r/.exec('hodor')  // null
          /(?<=\1d(o))r/.exec('hodor')  // ["r", "o"] //反向引用在匹配字符之前
      
    6. 具名组匹配 (?<name>regrex)

          const RE_DATE = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/
          const matchObj = RE_DATE.exec('1999-12-31')
          const year = matchObj.groups.year // 1999
          const month = matchObj.groups.month // 12
          const day = matchObj.groups.day // 31
      
          replace(/(?<name>x)y\k<name>/,'$<name>')
          // 反向引用具名组匹配 \k<name> $<name>
      

    tips

    1. .字符匹配所有字符需要us修饰符
          /^.{2}$/.test('𠮷\n') // false
          /^.{2}$/u.test('𠮷\n') // false
          /^.{2}$/s.test('𠮷\n') // false
          /^.{2}$/us.test('𠮷\n') // true
      
    2. regrex括号整理
          /(x)/ //组匹配
          /(?:x)/ //非组匹配
          /(?<name>x)/ //具名组匹配
          /x(?=y)/ // 正向肯定环视
          /x(?!y)/ // 正向否定环视
          /(?<=x)y/ // 逆向肯定环视
          /(?<!x)y/ // 逆向否定环视
      

    相关文章

      网友评论

          本文标题:regrex扩展

          本文链接:https://www.haomeiwen.com/subject/kzohiftx.html