ES6标准入门 第五章:正则的扩展
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标准入门 第五章:正则的扩展的更多相关文章
- ES6标准入门 第五章:函数的扩展
1.函数参数的默认值 (1)基本用法 ES5 中, 不能直接为函数的参数指定默认值.只能采用变通的方法. function log(x, y) { y = y || 'World'; console. ...
- ES6标准入门 第五章:数值的扩展
1.二进制和八进制数值表示法 二进制前缀:0b(或0B): 八进制前缀:0o(或0O). 注意:ES5的严格模式 和 ES6中不再允许使用 0 表示八进制. 将二进制和八进制数值转换为十进制数值 ...
- ES6学习 第五章 正则的扩展
前言 本章介绍正则的扩展.有些不常用的知识了解即可. 本章原文链接:正则的扩展 RegExp 构造函数 从 ES6 开始,如果RegExp构造函数第一个参数是一个正则对象,并且第二个标志存在且为标志参 ...
- ES6标准入门 第三章:变量的解构赋值
解构赋值:从数组和对象中提取值,对变量进行赋值. 本质上,这种写法属于“匹配模式”:只要等号两边的模式相同,左边的变量就会被赋予对应的值. 1.数组的结解构赋值 基本用法 let [foo, [[ba ...
- ES6标准入门 第四章:字符串的扩展
1.字符串的Unicode 表示法 JavaScript 允许采用 \uxxxx 表示一个字符,其中 xxxx 表示字符的码点. "\u0061" // "a" ...
- [转] 《ES6标准入门》读书笔记
来源:https://segmentfault.com/a/1190000005863641 let和const命令 ES6新增let命令,用于声明变量,是块级作用域. let声明的变量不会像var声 ...
- ES6标准入门之变量的解构赋值简单解说
首先我们来看一看解构的概念,在ES6标准下,允许按照一定模式从数组和对象中提取值,然后对变量进行赋值,这被称作解构,简而言之粗糙的理解就是变相赋值. 解构赋值的规则是,只要等号右边的值不是对象或者数组 ...
- Python 3标准库 第五章 数学运算
第五章数学运算-----------------------上下文解释:编程时,我们一般也是先给程序定义一些前提(环境变量.描述环境变化的全局变量等),这些“前提”就是上文,然后再编写各功能模块的代码 ...
- 《ES6标准入门》读书笔记 第5章 - 正则增强
第五章 - 正则增强 构造函数增强 允许覆写修饰符,如new RegExp(someRegex, 'ig') 字符串上的正则方法 原先match.replace等可以调用正则的方法在String的原型 ...
随机推荐
- lnmp 环境搭建后,pathinfo 模式支持的配制。
ThinkPHP的四种URL模式:0(普通模式);1(PATHINFO模式);2(REWRITE模式);3(兼容模式) nginx需要PATHINFO模式,但需要更改nginx配置文件让其支持PATH ...
- id 显示用户与用户组的信息
id 显示用户与用户组的信息 1.命令功能 id显示指定用户的用户ID和组ID等信息. 2.语法格式 id option username 参数说明 选项 选项说明 -gx 显示用户组ID -G ...
- Directed Roads CodeForces - 711D (基环外向树 )
ZS the Coder and Chris the Baboon has explored Udayland for quite some time. They realize that it co ...
- 给oracle命令的参数赋值
''' <summary> ''' 给oracle命令的参数赋值 ''' </summary> ''' <param name="cmd& ...
- Spring Boot 整合 AOP
一.示例 1.依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId& ...
- php基于websocket实现的在线聊天室
听说websocket技术可以实现 1.
- express中app和router的区别
var app = express(); var router = express.Router(); 以上二者的区别是什么,什么时候用哪个最合适? 区别看下面的例子: app.js var ex ...
- git的clone和github的fork
git的clone是从github上下载下来,clone到项目里面,fork是在本地修改后再提交到github上,在github上用request来进行提交,经作者确认后可以合同到mast分支上
- 一图解决五大I/O模型比较
- alpine操作
设置镜像源 使用其他版本把v3.7改成对应版本就行 查看版本 cat /etc/os-release 阿里 echo http://mirrors.aliyun.com/alpine/v3.7/mai ...