es6学习笔记(三)

es6学习笔记(三)

正则扩展

构造函数的变化

  • es6中如果RegExp构造函数第一个参数是正则对象,那么可以使用第二个参数指定修饰符。返回的正则表达式会忽略原有的正则表达式的修饰符,只是用新指定的修饰符。
    new RegExp(/abc/ig, 'i').flags
    //"i"
    

正则方法的扩展

u修饰符

  • 含义为“Unicode 模式”,用来正确处理四个字节的 UTF-16 编码

y修饰符

  • y修饰符叫做黏连修饰符
  • y修饰符的作用与g修饰符类似,也是全局匹配,后一次匹配都从上一次匹配成功的下一个位置开始。不同之处在于,g修饰符只要剩余位置中存在匹配就可,而y修饰符确保匹配必须从剩余的第一个位置开始,这也就是“粘连”的涵义。
    var s = 'aaa_aa_a';
    var r1 = /a+/g;
    var r2 = /a+/y;
    
    //第一找到匹配值aaa,剩下值_aa_a
    r1.exec(s) // ["aaa"]
    r2.exec(s) // ["aaa"]
    
    //第二次匹配中由于_aa_a中不是以a开头所以y修饰符找不到值返回null
    r1.exec(s) // ["aa"]
    r2.exec(s) // null
    

s修饰符

  • 正则表达式中,点(.)是一个特殊字符,代表任意的单个字符,但是有两个例外。一个是四个字节的 UTF-16 字符,这个可以用u修饰符解决;另一个是行终止符。
  • 所谓行终止符,就是该字符表示一行的终结。以下四个字符属于”行终止符“。
    1. U+000A 换行符(\n)
    2. U+000D 回车符(\r)
    3. U+2028 行分隔符(line separator)
    4. U+2029 段分隔符(paragraph separator)

新增属性

  • RegExp.prototype.sticky ,与y修饰符相匹配,表示是否设置了y修饰符
    var r = /hello\d/y;
    r.sticky // true
    
  • RegExp.prototype.flags 属性,返回正则表达式的修饰符
    // ES5 的 source 属性
    // 返回正则表达式的正文
    /abc/ig.source
    // "abc"
     
    // ES6 的 flags 属性
    // 返回正则表达式的修饰符
    /abc/ig.flags
    // 'gi'
    
  • RegExp.prototype.unicode 属性
    const r1 = /hello/;
    const r2 = /hello/u;
    
    r1.unicode // false
    r2.unicode // true
    

猜你喜欢

转载自blog.csdn.net/weixin_43756060/article/details/84551084