zoukankan      html  css  js  c++  java
  • es6正则表达式

    es6中如果RegExp构造函数第一个参数是一个正则对象,那么可以使用第二个参数指定修饰符。

    而且,返回的正则表达式会忽略原有的正则表达式的修饰符,只使用新指定的修饰符。

    new RegExp(/abc/ig, 'i').flags
    // "i"
    

    u修饰符 

    (1)点字符

    点(.)字符在正则表达式中,含义是除了换行符以外的任意单个字符。对于码点大于0xFFFF的Unicode字符,点字符不能识别,必须加上u修饰符。

    (2)Unicode字符表示法

    ES6新增了使用大括号表示Unicode字符,这种表示法在正则表达式中必须加上u修饰符,才能识别。

    (3)量词

    使用u修饰符后,所有量词都会正确识别码点大于0xFFFF的Unicode字符。

    (4)预定义模式

    u修饰符也影响到预定义模式,能否正确识别码点大于0xFFFF的Unicode字符。

    (5)i修饰符

    有些Unicode字符的编码不同,但是字型很相近,比如,u004Bu212A都是大写的K

    y 修饰符 

    y修饰符的作用与g修饰符类似,也是全局匹配,后一次匹配都从上一次匹配成功的下一个位置开始。不同之处在于,

    g修饰符只要剩余位置中存在匹配就可,而y修饰符确保匹配必须从剩余的第一个位置开始,这也就是“粘连”的涵义。

    sticky属性

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

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

      

    flags属性

    ES6为正则表达式新增了flags属性,会返回正则表达式的修饰符。

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

    p表示反向匹配,即匹配不满足条件的字符。

    // 匹配所有数字
    const regex = /^p{Number}+$/u;
    regex.test('²³¹¼½¾') // true
    regex.test('㉛㉜㉝') // true
    regex.test('ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ') // true

      

  • 相关阅读:
    Ajax World 名人堂
    Chrome Flash插件的手动安装方法
    2009年郭红俊的工作
    动画缓冲或叫缓动函数(Animation Easing)
    2008年郭红俊的工作
    Android下调整多媒体音量方法
    游戏中按概率播放某个音效简单c++实现
    string转int 等(转)
    .NET简谈面“.NET技术”向接口编程 狼人:
    改善代码设计 —— 处理概括关系(Dealing w“.NET技术”ith Generalization) 狼人:
  • 原文地址:https://www.cnblogs.com/detanx/p/es6zz.html
Copyright © 2011-2022 走看看