美文网首页
ES6学习笔记四|正则的扩展

ES6学习笔记四|正则的扩展

作者: ForeverYoung20 | 来源:发表于2016-11-01 15:46 被阅读36次

1. RegExp构造函数

  • ES5中,构造函数的参数有两种。
  • 第一种,参数是字符串,第二个参数表示正则表达式的修饰符(flag)。
var regex = new RegExp('xyz','i');
//等价于
var regex = /xyz/i;
  • 第二种,参数是一个正则表达式,这时返回一个原有正则表达式的拷贝。
var regex = new RegExp(/xyz/i);
//等价于
var regex = /xyz/i;
  • ES5不允许第一个参数是正则表达式时有第二个参数。
  • ES6允许RegExp构造函数的第一个参数是正则对象时有第二个参数。第二个参数指定修饰符。
new RegExp(/abc/ig,'i').flags;   //"i"

上述代码中,原有正则对象的修饰符是ig,它会被第二个参数i覆盖。

2. 字符串的正则方法

  • ES6将match()、replace()、search()和split()四个方法在语言内部调用RegExp的实例方法,从而做到所有与正则相关的方法,全部定义在正则对象上。

  • String.prototype.match
    调用 RegExp.prototype[Symbol.match]

  • String.prototype.replace
    调用 RegExp.prototype[Symbol.replace]

  • String.prototype.search
    调用 RegExp.prototype[Symbol.search]

  • String.prototype.split
    调用 RegExp.prototype[Symbol.split]

3. u修饰符

ES6对正则表达式添加了u修饰符,含义为“Unicode”模式,用来正确处理大于\uFFFF的Unicode字符。

  • 一旦加上u修饰符号,就会修改下面正则表达式的行为。

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

     /^.$/.test(s) // false
     /^.$/u.test(s) // true
    
  • Unicode字符表示法
    ES6新增了使用大括号表示Unicode字符,这种表示法在正则表达式中必须加上u修饰符才能识别。
    /\u{61}/u.test('a'); //true

  • 量词

    • 使用u修饰符后,所有量词都会正确识别码点大于0xFFFF的Unicode字符。
      /𠮷{2}/.test('𠮷𠮷') // false
      /𠮷{2}/u.test('𠮷𠮷') // true

    • 只有在u修饰符的情况下,Unicode表达式当中的大括号才会被正确解读,否则被解读为量词。

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

  • i修饰符
    /[a-z]/i.test('\u212A') // false
    /[a-z]/iu.test('\u212A') // true
    上述代码不加u修饰符,就无法识别非规范的k字符。

4. y修饰符

y修饰符叫做“粘连”修饰符。

  • 和g修饰符类似,全局匹配。后一次匹配在上一次匹配成功的下一个位置开始。不同之处在于,g只要剩余位置中存在匹配就可,而y确保匹配必须在剩余的第一个位置开始。

5. sticky属性

该属性表示是否设置了y修饰符

var r = /hello\d/y;
r.sticky // true

6. flags属性

该属性返回正则表达式的修饰符。

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

7. RegExp.escape()

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

待续。。。

相关文章

  • ES6学习笔记四|正则的扩展

    1. RegExp构造函数 ES5中,构造函数的参数有两种。 第一种,参数是字符串,第二个参数表示正则表达式的修饰...

  • JavaScript ES6 - 正则表达式扩展

    正则扩展: 主要来与 ES5 做一个对比 (也就是语法的扩展) 1. ES6 正则新特性: 如图所示: 1. 正则...

  • es6学习笔记之正则扩展

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

  • ES6 学习笔记(4) 正则的扩展

    1. RegExp 构造函数 ES5中RegExp构造函数的参数有两种情况 参数是字符串,这时候第二个参数表示正则...

  • ES6扩展归纳

    ES6扩展归纳 介绍ES6相比与ES5在原有对象上的扩展,包括字符串、正则、数值、函数、数组、对象等扩展,本文是阮...

  • es6学习笔记整理(二)正则扩展

    正则新特性 在正式开始之前,简单地了解一下ES5的修饰符:这些符号被称为正则表达式模式修饰符,用法含义如下: 1、...

  • JS正则表达式

    JS正则表达式一条龙讲解,从原理和语法到JS正则、ES6正则扩展,最后再到正则实践思路 Stinson 关注 20...

  • ES项目学习笔记(四)正则的扩展

    RegExp构造函数 写正则时基本上都是直接以//定义了,不看还差点忘了有个构造函数RegExp,这个构造参数有两...

  • 正则详解--程序员必备

    转自: JS正则表达式一条龙讲解,从原理和语法到JS正则、ES6正则扩展,最后再到正则实践思路 温馨提示:文章很长...

  • ECMAScript6--4.正则扩展

    1.正则新增特性 构造函数的变化 正则方法的扩展字符串处理的一些正则方法,在ES6中已经是调用了正则对象的方法; ...

网友评论

      本文标题:ES6学习笔记四|正则的扩展

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