ES6正则表达式的一些新功能总结


Posted in Javascript onMay 09, 2017

本文主要总结了ES6正则表达式的一些新功能,分享出来供大家参考学习,下面来看看详细的介绍:

一、构造函数实例化参数的变化

大家都知道,在ES5中,new RegExp(参数1,参数2),参数1若是指定了正则修饰符,则参数2就不应该出现,否则将会报错,在ES6中,第二个参数的正则修饰符会覆盖掉原有的修饰符:

<script>
//在ES5中,下面的正则自带修饰符ig,则第二个参数不能出现
var reg = new RegExp(/asd/ig);
//在ES6中,如下:
var reg = new RegExp(/asd/ig,'i');
//i会覆盖掉原来的ig
</script>

二、u修饰符

u修饰符可以自动识别码点大于0xFFFF的编码。只是ES6的新增内容!

<script>
/\uD83D/u.test("\uD83D\uDC2A");
//在ES6中会返回false,u修饰符默认处理的UTF-16编码
/\uD83D/.test("\uD83D\uDC2A");
//在ES5中会将test的的参数拆分成两个字符,返回true
</script>

另外使用u修饰符需要注意一下几点:

1. “.”字符

在正则表达式中,.字符的含义是除了换行符以外的所有字符,如要.字符匹配码点大于\uFFFF的字符,必须带u修饰符,否则不能正常识别;

<svcipt>
var s = "��";
//在ES5中
/^.$/.test(s)//false
//在ES6中
/^.$/u.test(s)//true
</script>

2.Unicode字符表示法

ES6中新增使用了大括号表示Unicode字符,这种方法在正则表达式中必须加上u修饰符才能识别。

<svcipt>
//在ES5中,61会被当做量词使用
/\u{61}/.test("a")//false
//在ES6中
/\u{61}/u.test("a")//true
</script>

3.预定义模式

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

4.对i修饰符的影响

有些Unicode编码的字符比较接近,比如大写的K的编码有\u004B和\u212A,

<svcipt>
//未添加u修饰
/[a-z]/.test("\u212A")//false
//添加u修饰
/[a-z]/iu.test("\u212A")//true
</script>

三、y修饰符

ES6还新增了一个y修饰符,与通常的g修饰符用法类似,都是用来全局匹配,不同的是y修饰符又叫做“粘连”修饰符,在上一次匹配成功的下一个位置开始匹配,但是下一次开始位置必须要能够满足匹配,也就是匹配从剩余的第一个位置开始,这就是“粘连”的含义(个人理解)吧。

举个例子吧!

<svcipt>
var s = qqqq_q_qq;
var r1 = /q+/g;
var r2 = /q+/y
//第一次匹配
r1.exec(s)//["qqqq"]
r2.exec(s)//["qqqq"]
//第二次匹配
r1.exec(s)//["qqq"]
r2.exec(s)//null
</script>

注意:y修饰符隐含了头部匹配的标志^

/a/.exec("bdab");//null
/a/.exec("abbd");//["a"]

开头必须匹配上

四、新增属性

1.sticky属性

      判断正则是否设置了y修饰符。

      返回布尔值。

2.flags属性

      返回正则的修饰符

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
基于jquery.Jcrop的头像编辑器
Mar 01 Javascript
基于jquery的滚动新闻列表
Jun 19 Javascript
js随机颜色代码的多种实现方式
Apr 23 Javascript
jQuery实现表头固定效果的实例代码
May 24 Javascript
浅谈JavaScript 执行环境、作用域及垃圾回收
May 31 Javascript
vue.js中过滤器的使用教程
Jun 08 Javascript
纯JS实现只能输入数字的简单代码
Jun 21 Javascript
详解vue + vuex + directives实现权限按钮的思路
Oct 24 Javascript
10分钟上手vue-cli 3.0 入门介绍
Apr 04 Javascript
微信小程序 拍照或从相册选取图片上传代码实例
Aug 28 Javascript
vue中nextTick用法实例
Sep 11 Javascript
vue组件库的在线主题编辑器的实现思路
Apr 03 Javascript
Vuex和前端缓存的整合策略详解
May 09 #Javascript
基于JS实现限时抢购倒计时间表代码
May 09 #Javascript
js使用i18n实现页面国际化的方法
May 09 #Javascript
Angular中$state.go页面跳转并传递参数的方法
May 09 #Javascript
Vue 2.0中生命周期与钩子函数的一些理解
May 09 #Javascript
JavaScript中splice与slice的区别
May 09 #Javascript
详解node中创建服务进程
May 09 #Javascript
You might like
PHP验证码类代码( 最新修改,完全定制化! )
2010/12/02 PHP
简单的cookie计数器实现源码
2013/06/07 PHP
PHP中SESSION的注销与清除
2015/04/16 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
深入解析PHP底层机制及相关原理
2020/12/11 PHP
初窥JQuery(二)事件机制(2)
2010/12/06 Javascript
页面图片浮动左右滑动效果的简单实现案例
2014/02/10 Javascript
jquery让返回的内容显示在特定div里(代码少而精悍)
2014/06/23 Javascript
在JavaScript中正确引用bind方法的应用
2015/05/11 Javascript
举例讲解JavaScript中将数组元素转换为字符串的方法
2015/10/25 Javascript
js从外部获取图片的实现方法
2016/08/05 Javascript
javascript宿主对象之window.navigator详解
2016/09/07 Javascript
nodejs中解决异步嵌套循环和循环嵌套异步的问题
2017/07/12 NodeJs
浅谈vue.js中v-for循环渲染
2017/07/26 Javascript
vue计算属性computed、事件、监听器watch的使用讲解
2019/01/21 Javascript
使用JS判断页面是首次被加载还是刷新
2019/05/26 Javascript
Python3读取UTF-8文件及统计文件行数的方法
2015/05/22 Python
python 3.5实现检测路由器流量并写入txt的方法实例
2017/12/17 Python
Python缓存技术实现过程详解
2019/09/25 Python
python实现的Iou与Giou代码
2020/01/18 Python
python中selenium库的基本使用详解
2020/07/31 Python
python线程里哪种模块比较适合
2020/08/02 Python
Python3中小括号()、中括号[]、花括号{}的区别详解
2020/11/15 Python
Python析构函数__del__定义原理解析
2020/11/20 Python
django项目中使用云片网发送短信验证码的实现
2021/01/19 Python
20世纪40年代连衣裙和复古服装:The Seamstress Of Bloomsbury
2018/07/24 全球购物
英国的一家创新礼品和小工具零售商:Menkind
2019/08/24 全球购物
Street One瑞士:德国现代时装公司
2019/10/09 全球购物
日本化妆品植村秀俄罗斯官方网站:Shu Uemura俄罗斯
2020/02/01 全球购物
澳大利亚在线购买葡萄酒:The Wine Collective
2020/02/20 全球购物
应届毕业生求职信范文分享
2013/12/26 职场文书
兰兰过桥教学反思
2014/02/08 职场文书
十佳好少年事迹材料
2014/08/21 职场文书
乡领导班子四风问题对照检查材料
2014/09/25 职场文书
慰问信格式
2015/02/14 职场文书
javascript canvas实现雨滴效果
2021/06/09 Javascript