zoukankan      html  css  js  c++  java
  • 正则的扩展

    y修饰符

    y修饰符,叫做“粘连”(sticky)修饰符

    g修饰符,y修饰符的特点

    g修饰符是从头匹配,匹配里是否含有规则相关的,注意:如有aba,匹配第一个a的时候,匹配第二次,就匹配剩余的a.

    y修饰符是从头匹配,不过必须的一定要头部匹配成功,否则就返回null,相当于/^a/.

    lastIndex属性指定每次搜索的开始位置

    index为匹配的位置

    RegExp.prototype.sticky 属性

    y修饰符相匹配,ES6 的正则实例对象多了sticky属性,表示是否设置了y修饰符。

    var r = /hellod/y;
    r.sticky // true


     RegExp.prototype.flags属性

    返回正在表达式的修饰符

    // ES5 的 source 属性
    // 返回正则表达式的正文
    /abc/ig.source
    // "abc"
    
    // ES6 的 flags 属性
    // 返回正则表达式的修饰符
    /abc/ig.flags
    // 'gi'

    S修饰符:dotAll模式
    主要匹配能行终止符
    如 ,
    fotAll属性,返回一个布尔值,判断该正在是否存在dotAll模式

    后行断言
    “先行断言”指的是,x只有在y前面才匹配,
    ‘先行否定断言’,x下只有不在y前面才匹配
    ‘后行断言’x只有y后面才匹配
    ‘后行否定断言’x只有不在后面才匹配

    Unicode属性类
    Es2018引入了一种新的类的写法p{...}和P{...},根据花括号写的Unicode某种属性,去匹配字符。
    P{…}p{…}的反向匹配,即匹配不满足条件的字符。

    具名匹配
    正常的组匹配

    const RE_DATE = /(d{4})-(d{2})-(d{2})/;

    const matchObj = RE_DATE.exec('1999-12-31');

    const year = matchObj[1]; // 1999
    const month = matchObj[2]; // 12
    const day = matchObj[3]; // 31

    ES2018引入了具名组匹配,给他加个名字,通过group属性点名字访问
    模式的头部添加“问号 + 尖括号 + 组名”
    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"






     



     

  • 相关阅读:
    C# Thread Lambda
    C#中Invoke的用法
    C#抽象类和抽象方法
    SQL Server2005杂谈(2):公用表表达式(CTE)的递归调用
    改变自己的128种方法
    小技巧
    Linux学习第一章作业.zxs
    Linux学习第二、三章作业.zxs
    Linux 系统管理 04—账号管理
    Mysql中的in和find_in_set的区别?
  • 原文地址:https://www.cnblogs.com/xiaoniaohhl/p/14531009.html
Copyright © 2011-2022 走看看