1、RegExp 构造函数

ES5的缺陷:

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

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

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

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

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

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

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

ES6的改进:

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

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

2、字符串的正则方法

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

ES6内部,将与正则相关的方法全部定义在 RegExp对象上;语言内部全部调用 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修饰符

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

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

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

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

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

(1)点字符

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

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

var s = '												

ES6标准入门 第五章:正则的扩展的更多相关文章

  1. ES6标准入门 第五章:函数的扩展

    1.函数参数的默认值 (1)基本用法 ES5 中, 不能直接为函数的参数指定默认值.只能采用变通的方法. function log(x, y) { y = y || 'World'; console. ...

  2. ES6标准入门 第五章:数值的扩展

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

  3. ES6学习 第五章 正则的扩展

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

  4. ES6标准入门 第三章:变量的解构赋值

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

  5. ES6标准入门 第四章:字符串的扩展

    1.字符串的Unicode 表示法 JavaScript 允许采用 \uxxxx 表示一个字符,其中 xxxx 表示字符的码点. "\u0061" // "a" ...

  6. [转] 《ES6标准入门》读书笔记

    来源:https://segmentfault.com/a/1190000005863641 let和const命令 ES6新增let命令,用于声明变量,是块级作用域. let声明的变量不会像var声 ...

  7. ES6标准入门之变量的解构赋值简单解说

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

  8. Python 3标准库 第五章 数学运算

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

  9. 《ES6标准入门》读书笔记 第5章 - 正则增强

    第五章 - 正则增强 构造函数增强 允许覆写修饰符,如new RegExp(someRegex, 'ig') 字符串上的正则方法 原先match.replace等可以调用正则的方法在String的原型 ...

随机推荐

  1. PHP判断邮箱地址是否合法的正则表达式

    PHP判断邮箱地址是否合法的正则表达式: function checkEmail($inAddress){ return (preg_match("/^([a-zA-Z0-9_-])+@([ ...

  2. [易学易懂系列|rustlang语言|零基础|快速入门|(2)|VSCODE配置]

    我们今天来配置下vscode+rust. vscode开发rust很方便.但配置有点坑,我们都认为vscode很简单,很完善. 但这里很多同学也出现不少问题. 我们在这里简单记录下win7下配置的过程 ...

  3. @PostContruct 连接数据库的问题

    在@PostContruct中连接数据库取数据会报错,因为spring的lazy loading机制,不一定所有的bean都已经实例化好了.可以使用ApplicationListener,通过Cont ...

  4. [ZJOI2014]力 题解

    题目地址 洛谷P3338 Solution 第一道FFT的应用AC祭! 我们要求: \[E_j=\frac{F_j}{q_j}=\sum_{i<j}\frac{q_i}{(i-j)^2}-\su ...

  5. vue 解决axios 跨域问题

    闲着没事,假期敲vue 请求数据,总结下vue跨越问题 第一种.服务器服务器不支持跨域请求   1.当跨域无法请求的时候我们可以修改工程下config文件夹下的index.js中的dev:{}部分. ...

  6. 【regex】POSIX标准正则表达式库

    在linux C 下面没有编译成功使用?号的非贪婪模式. 网上的一句话:the ? only works for Perl-based regexp, not for POSIX... 如果需要使用非 ...

  7. requestAnimationFram

    window.requestAnimationFrame() 告诉浏览器——你希望执行一个动画,并且要求浏览器在下次重绘之前调用指定的回调函数更新动画.该方法需要传入一个回调函数作为参数,该回调函数会 ...

  8. JS Null 空 判断

    JS判断对象是否为空 https://www.cnblogs.com/mountain-mist/articles/1600995.html http://www.cftea.com/c/2007/0 ...

  9. 1.端口被占用问题:Embedded servlet container failed to start. Port 8097 was already in use.

    1.端口被占用问题:Embedded servlet container failed to start. Port 8097 was already in use.netstat -anonetst ...

  10. js 反斜杠 处理

    var t = jsonstr.replace(/\\/g,"\\\\\\\\"); --\\ 表示 代码 输出 \' 单引号 \" 双引号 \& 和号 \\ 反 ...