zoukankan      html  css  js  c++  java
  • ES6入门——正则的扩展

    1、RegExp构造函数

    在ES5中,RegExp构造函数的参数有两种情况。第一种情况是参数是字符串,这时第二个参数表示正则表达式的修饰符;第二种情况是,参数是一个正则表示式,这时会返回一个原有正则表达式的拷贝。但是,ES5不允许此时使用第二个参数,添加修饰符,否则会报错

    var regex = new RegExp('xyz','i');
    //等价于
    var regex = /xyz/i;
    
    var regex = new RegExp(/xyz/i);
    //等价于
    var regex = /xyz/i;
    
    var regex = new RegExp(/xyz/,'i');  //报错

    ES6改变了这种行为,如果RegExp构造函数第一个参数是一个正则对象,那么可以使用第二个参数指定修饰符。而且,返回的正则表达式会忽略原有的正则表达式的修饰符,只使用新指定的修饰符。

    2、字符串的正则表达式

    字符串对象共有4个方法,可以使用正则表达式:match()、replace()、search()和split()。

    3、U修饰符

    ES6对正则表达式添加了u修饰符,含义为“Unicode模式”,用来正确处理大于uFFFF的Unicode字符。也就是说,会正确处理四个字节的UTF-16编码。

    4、y修饰符

    除了u修饰符,ES6还为正则表达式添加了y修饰符,叫做“粘连(sticky)”修饰符。y修饰符的作用域g修饰符类似,也是全局匹配,后一次匹配都从上一次匹配成功的下一个位置开始。不同之处在于g修饰符只要剩余位置中存在匹配就可以,而y修饰符确保匹配必须从剩余的第一个位置开始,这也是“粘连”的涵义。

    5、sticky属性

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

    6、flags属性

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

    7、RegExp.escape()

    字符串必须转义,才能作为正则模式。

    8、s修饰符:dotAll模式

    很多时候我们希望匹配的是任意单个字符,这时有一个提案,就是引入/s修饰符,使得 . 可以匹配任意单个字符。这被称为dotAll模式,即点(dot)代表一切字符。所以,正则表达式还引入了一个dotAll属性,返回一个布尔值,表示该正则表达式是否处在dotAll模式中。

  • 相关阅读:
    强连通 HDU 1827
    强联通 HDU 2767 3836
    强连通 HDU 1269
    网络流 poj 2135
    强联通 poj 2762
    android20-[【转】Android的EditText自动获取焦点并弹出输入法问题]
    windows开发中的一点总结
    android19
    android18
    android17
  • 原文地址:https://www.cnblogs.com/fengxiongZz/p/8001143.html
Copyright © 2011-2022 走看看