ES6正则表达式的扩展

    科技2026-02-11  16

    ES6正则表达式的扩展

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

    二, 字符串的正则方法 以下方法,在语言内部全部调用RegExp的实例方法,可以使用正则表达式: match()、replace()、search()和split()。

    三,u修饰符 正则表达式添加的 u 修饰符,用来正确处理大于\uFFFF的 Unicode 字符。 例如:

    /^\uD83D/u.test('\uD83D\uDC2A') // false /^\uD83D/.test('\uD83D\uDC2A') // true

    上面代码中的\uD83D\uDC2A是一个四个字节的 UTF-16 编码,代表一个字符。但是,ES5 不支持四个字节的 UTF-16 编码,会将其识别为两个字符,导致第二行代码结果为true。加了u修饰符以后,ES6 就会识别其为一个字符,所以第一行代码结果为false。

    四,RegExp.prototype.unicode 属性

    正则实例对象新增unicode属性,表示是否设置了u修饰符

    const a1 = /hello/; const a2 = /hello/u; a1.unicode // false a2.unicode // true 五, y修饰符 y修饰符,“粘连”(sticky)修饰符。 y修饰符的作用与g修饰符类似,也是全局匹配,后一次匹配都从上一次匹配成功的下一个位置开始。不同之处在于,g修饰符只要剩余位置中存在匹配就可,而y修饰符确保匹配必须从剩余的第一个位置开始。六,RegExp.prototype.sticky 属性 与y修饰符相匹配,ES6 的正则实例对象多了sticky属性,表示是否设置了y修饰符。 var r1 = /hello/; r1.sticky //false var r2 = /hello/y; r2.sticky // true 七,RegExp.prototype.flags 属性 正则表达式新增的flags属性,会返回正则表达式的修饰符。 /abc/ig.flags // 'gi'
    Processed: 0.017, SQL: 9