• ES6-02:正则表达式扩展


    ES5中,正则表达式构造函数的参数有两中情况:
    ①:new RegExp(string,flag);如var reg=new RegExp('xyz','i');
    ②:new RegExp(regexp);如var reg=new RegExp(/xyz/i);
    采用第二种方式创建时,不允许传递第二个参数flag,否则会报错,但ES6允许

    1. 字符串的正则方法

    字符串对象共有4个方法可以使用正则表达式:match()、replace()、search()、split();ES6使者4个方法在语言内部实现时全部调用RegExp的实例方法,进而保证所有与正则相关的方法都定义在RegExp对象上;

    • String.prototype.match 调用RegExp.prototype[Symbol.match];
    • String.prototype.replace调用RegExp.prototype[Symbol.replace];
    • String.prototype.search 调用RegExp.prototype[Symbol.search];
    • String.prototype.split 调用RegExp.prototype[Symbol.split];

    2.RegExp正则表达式修饰符

    ES5正则表达式的修饰符有三个:

    • i:case-insensitive,即不区分大小写模式,匹配时忽略大小写;
    • g: global,即全局模式,模式将被引用于所有字符串;
    • m:multiline,即多行模式,在达到一行文本末尾时还会继续查找下一行是否存在匹配项;

    ES6新增4个修饰符:

    • y:sticky,即粘连,后一次匹配从上一次匹配成功的下一个位置开始;
    • u:unicode,即UTF-16修饰符,用来处理4个字节(大于uFFFF)的UTF-16编码unnicode字符;
    • s:dotAll,即匹配包括行终止符的任意字符;

    3.新增特性

    • 后行断言

    JAvaScript语言的正则表达式仅支持现行断言和现行否定断言;ES6提案支持后行断言和后行否定断言;
    ①先行断言:

    /d+(?=%)/.exec('100% of US prisident.'); // ['100'] 仅匹配%之前的数字
    /d+(?!%)/.exec('that is to say 33'); //['33'] 仅匹配不在%之前的数字
    

    ②后行断言

    /(?<=$)d+/.exec('I have $100');//['100'] 仅匹配$符号后面的数字
    /(?!$)d+/.exec('It is worth about ¥90');//['90] 仅匹配不在$后面的数字
    
    • unicode属性
      p{expression}:允许正则表达式匹配符合unicode某种属性的所有字符;
    • 具名组匹配:
      ①ES5 正则表达式允许使用圆括号进行组匹配:
    const exp=/(d{4})-(d{2})-(d{2})/;
    const res=exp.exec('2017-12-19');
    const year=res[1]; // 2017
    const month=res[2]; // 12
    const day=res[3]; //19
    

    ②ES6提案有一个具名组正则匹配表达式

    const reg=/(<?year>d{4})-(<?month>d{2})-(<?day>d{2})/;
    const res=reg.exec('2017-12-19');
    const year=res.group.year;//2017
    const month=res.group.month;//12
    const day=res.group.day;// 19
    

    ③具名组引用k<name>

    const reg=/(<?year>d{4})-(<?month>d{2})-k<month>/
    const reg.exec('2017-12-19');// ture
    
  • 相关阅读:
    moviepy音视频剪辑:视频基类VideoClip子类VideoFileClip、CompositeVideoClip、ImageSequenceClip介绍及使用案例
    moviepy执行TextClip.search方法时报错TypeError: a bytes-like object is required, not str
    python学习接口测试(二)
    python 接口测试(一)
    接口测试学习
    python 将表格多个列数据放到同一个单元格中
    python对表格的使用
    python 下实现window 截图
    python selenium 下拉框
    selenium+chrome下载文件,格式怎么选择???
  • 原文地址:https://www.cnblogs.com/hbzyin/p/8012296.html
Copyright © 2020-2023  润新知