1、RegExp 构造函数

ES5的缺陷:

ES5中构造函数的参数有两种情况:

(1)参数是字符串,这时第二个参数表示正则表达式的的修饰符(flag)。

  1. var reg = new RegExp( "xyz", "i" ); 等价于 var reg = /xyz/i;

(2)参数是一个正则表达式,返回一个原有正则表达式的拷贝。

  1. var reg = new RegExp( /xyz/i ); 等价于 var reg = /xyz/i;

不允许使用第二个参数指定修饰符,否则会报错。

  1. var regex = new RegExp(/xyz/, 'i'); // 报错

ES6的改进:

ES6中RegExp构造函数 第一个参数是一个正则表达式,可以使用第二个参数只当修饰符。 指定的修饰符会覆盖原有正则表达式的修饰符。

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

2、字符串的正则方法

字符串对象有四个方法可以调用正则表达式: match()、replace()、search()、split()

ES6内部,将与正则相关的方法全部定义在 RegExp对象上;语言内部全部调用 RegExp的实例方法。

  1. String.prototype.match 调用 RegExp.prototype[Symbol.match]
  2. String.prototype.replace 调用 RegExp.prototype[Symbol.replace]
  3. String.prototype.search 调用 RegExp.prototype[Symbol.search]
  4. String.prototype.split 调用 RegExp.prototype[Symbol.split]

3、u修饰符

ES5不支持四字节的UTF-16编码,将其识别为两个字符。

  1. /^\uD83D/.test('\uD83D\uDC2A'); // true

ES6对正则表达式添加了u修饰符,含义为“Unicode”模式;用来正确处理 大于 /uFFFF 的字符【四字节的UTF-16编码】。将其识别为一个字符。

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

加上u修饰符,以下正则表达式的行为就会被修改:

(1)点字符

点字符(.)在正则中的含义:除了换行符以外的任意单个字符。

点字符不能识别大于0xFFFF 的Unicode字符,必须加上u修饰符才能识别。

  1. var s = '
  2. ES6标准入门 第五章:正则的扩展的更多相关文章

      1. ES6标准入门 第五章:函数的扩展
      1. 1.函数参数的默认值 (1)基本用法 ES5 中, 不能直接为函数的参数指定默认值.只能采用变通的方法. function log(x, y) { y = y || 'World'; console. ...

      1. ES6标准入门 第五章:数值的扩展
      1. 1.二进制和八进制数值表示法 二进制前缀:0b(或0B):   八进制前缀:0o(或0O). 注意:ES5的严格模式 和 ES6中不再允许使用 0  表示八进制. 将二进制和八进制数值转换为十进制数值 ...

      1. ES6学习 第五章 正则的扩展
      1. 前言 本章介绍正则的扩展.有些不常用的知识了解即可. 本章原文链接:正则的扩展 RegExp 构造函数 从 ES6 开始,如果RegExp构造函数第一个参数是一个正则对象,并且第二个标志存在且为标志参 ...

      1. ES6标准入门 第三章:变量的解构赋值
      1. 解构赋值:从数组和对象中提取值,对变量进行赋值. 本质上,这种写法属于“匹配模式”:只要等号两边的模式相同,左边的变量就会被赋予对应的值. 1.数组的结解构赋值 基本用法 let [foo, [[ba ...

      1. ES6标准入门 第四章:字符串的扩展
      1. 1.字符串的Unicode 表示法 JavaScript 允许采用 \uxxxx 表示一个字符,其中 xxxx 表示字符的码点. "\u0061" // "a" ...

      1. [转] 《ES6标准入门》读书笔记
      1. 来源:https://segmentfault.com/a/1190000005863641 let和const命令 ES6新增let命令,用于声明变量,是块级作用域. let声明的变量不会像var声 ...

      1. ES6标准入门之变量的解构赋值简单解说
      1. 首先我们来看一看解构的概念,在ES6标准下,允许按照一定模式从数组和对象中提取值,然后对变量进行赋值,这被称作解构,简而言之粗糙的理解就是变相赋值. 解构赋值的规则是,只要等号右边的值不是对象或者数组 ...

      1. Python 3标准库 第五章 数学运算
      1. 第五章数学运算-----------------------上下文解释:编程时,我们一般也是先给程序定义一些前提(环境变量.描述环境变化的全局变量等),这些“前提”就是上文,然后再编写各功能模块的代码 ...

      1. 《ES6标准入门》读书笔记 第5章 - 正则增强
      1. 第五章 - 正则增强 构造函数增强 允许覆写修饰符,如new RegExp(someRegex, 'ig') 字符串上的正则方法 原先match.replace等可以调用正则的方法在String的原型 ...

    1.  
    2. 随机推荐

        1. apache 部署
        1. <VirtualHost *:80> ServerAdmin webmaster@dummy-host.localhost DocumentRoot "D:/EmpireServ ...

        1. Hash基础
        1. BKDR Hash: 选取恰当的进制,可以把字符串中的字符看成一个大数字中的每一位数字,不过比较字符串和比较大数字的复杂度并没有什么区别 首先不要把任意字符对应到数字0,比如假如把a对应到数字0,那么 ...

        1. scrapy 知乎关键字爬虫spider代码
        1. 以下是spider部分的代码.爬知乎是需要登录的,建议使用cookie就可以了,如果需要爬的数量预计不多,请不要使用过大的线程数量,否则会过快的被封杀,需要等十几个小时账号才能重新使用,比起损失的这十 ...

        1. mapper映射文件配置之select、resultMap(转载)
        1. 原文地址:http://www.cnblogs.com/dongying/p/4073259.html 先看select的配置吧: <select         <!-- 1. id ( ...

        1. Linux培训教程 linux中nl命令使用介绍
        1. nl命令在linux系统中用来计算文件中行号.nl 可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等 ...

        1. PHP入门培训教程 PHP变量及常量
        1.      一.PHP5.4的基本语法格式 1.PHP的分割符 $php=true; //分号结束语句 if($php){ echo "真"; //分号结束语句 } //大括号结束语 ...

        1. codevs2833 奇怪的梦境 x
        1. 2833 奇怪的梦境  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold   题目描述 Description Aiden陷入了一个奇怪的梦境:他被困在一个小房子中 ...

        1. 【Leetcode】最长回文子串
        1. 启发 1)做题前一定要读懂题目 在本题中,首先要清楚地定义回文子串的概念,然后才能设计算法查找它. 如中心扩散法,其主要思想在于找到一个回文子串的定义——两侧互为镜像.进一步分为奇数长度和偶数长度进行 ...

        1. React曾经忽略的知识点(下)
        1. 1.JSX渲染 想让类似 false.true.null 或 undefined 出现在输出中,你必须先把它转换成字符串 : <div> My JavaScript variable is ...

        1. windows powershell的常用命令
        1. cmd开启3389 如何用CMD开启3389与查看3389端口 开启 REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal /f 查端口 net ...