美文网首页
ES6总结3- 正则扩展

ES6总结3- 正则扩展

作者: 辣瓜瓜 | 来源:发表于2019-05-07 22:23 被阅读0次

    ES6学习总结是自己在学习过程中的总结,记笔记就是为了督促自己学习和复习,好记性不如烂笔头。如果有错误,感谢指出。

    正则扩展

    构造函数的变化
    {
        let regex = new RegExp('xyz', 'i'); //第一个参数是字符串,第二个是修饰符
        let regex2 = new RegExp(/xyz/i);
        //es5第一个参数是正则表达式,不接受第二个参数,否则会报错
        console.log(regex.test('xyz123'), regex2.test('xyz123'));//true true
      
      //es6中可以接受第二个参数,第二个会覆盖第一个修饰符
        let regex3 = new RegExp(/abc/ig, 'i');
        console.log(regex3.flags); //原有正则对象的修饰符是ig,后面的修饰符覆盖了前面的
    }
    

    新增修饰符

    y修饰符

    g第二次不要求紧接着的字符一定要匹配上,y要求,所以null

    sticky判断正则对象是否开启了带y修饰符的作用

    {
        let s = 'bbbb_bbb_bb_b';
        var a1 = /b+/g;
        var a2 = /b+/y;
    
        console.log(a1.exec(s), a2.exec(s)); // ["bbbb"],["bbbb"]
        console.log(a1.exec(s), a2.exec(s)); // ["bbb"],null
        console.log(a1.sticky, a2.sticky); //false true
    }
    

    u修饰符

    u会认为test里面是一个整体

    总结:
    正则中大于2个字符要加修饰符

    es6中点不能匹配所有字符

    {
        console.log('u修饰符',/^\uD83D/.test('\uD83D\uDC2A')); // true
        console.log('u修饰符',/^\uD83D/u.test('\uD83D\uDC2A')); // false
        // u会认为test里面是一个整体
        
        console.log(/\u{61}/.test('a')); // false
        console.log(/\u{61}/u.test('a')); // true
        console.log(/\u{20BB7}/u.test('𠮷')); // true
        // {61}需要加u才能识别Unicode
        // 点(.)字符不能识别码点大于0xFFFF的Unicode字符,必须加上u修饰符。
        
        let s = '𠮷';
        console.log('u符',/^.$/.test(s)); // false
        console.log('u-2',/^.$/u.test(s)); // true
        //字符串大于两个字节,就没办法识别;es5中.匹配任何字符
        //20BB7,超过4位,是2个字节了,需要加u
    
    

    s修饰符

    正则表达式中,点(.)是一个特殊字符,代表任意的单个字符,行终止符除外。换行符,回车符 行、段分隔符....点也不能匹配,加S分隔符。

    仅为提案。




















    相关文章

      网友评论

          本文标题:ES6总结3- 正则扩展

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