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 相关文章推荐
文字幻灯片
Jun 26 Javascript
JavaScript面向对象知识串结(读JavaScript高级程序设计(第三版))
Jul 17 Javascript
JavaScript自定义事件介绍
Aug 29 Javascript
javascript实现锁定网页、密码解锁效果(类似系统屏幕保护效果)
Aug 15 Javascript
JavaScript包装对象使用详解
Jul 09 Javascript
使用jquery实现的循环连续可停顿滚动实例
Nov 23 Javascript
解决Vue打包之后文件路径出错的问题
Mar 06 Javascript
Vue2.0点击切换类名改变样式的方法
Aug 22 Javascript
vue中轮训器的使用
Jan 27 Javascript
详解Element 指令clickoutside源码分析
Feb 15 Javascript
微信小程序地图导航功能实现完整源代码附效果图(推荐)
Apr 28 Javascript
layui监听select变化,以及设置radio选中的方法
Sep 24 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(3) php 函数
2010/02/15 PHP
PHP中用接口、抽象类、普通基类实现“面向接口编程”与“耦合方法”简述
2011/03/23 PHP
yii2实现Ueditor百度编辑器的示例代码
2018/11/02 PHP
PHP自动载入类文件函数__autoload的使用方法
2019/03/25 PHP
Laravel框架实现文件上传的方法分析
2019/09/29 PHP
EXT窗口Window及对话框MessageBox
2011/01/27 Javascript
Javascript学习笔记 delete运算符
2011/09/13 Javascript
验证码按回车不变解决方法
2013/03/29 Javascript
JS脚本根据手机浏览器类型跳转WAP手机网站(两种方式)
2015/08/04 Javascript
JS模拟按钮点击功能的方法
2015/12/22 Javascript
javascript弹性运动效果简单实现方法
2016/01/08 Javascript
JS给swf传参数的实现方法
2016/09/13 Javascript
JS基于for语句编写的九九乘法表示例
2018/01/04 Javascript
python使用os模块的os.walk遍历文件夹示例
2014/01/27 Python
python实现html转ubb代码(html2ubb)
2014/07/03 Python
Python抓取框架Scrapy爬虫入门:页面提取
2017/12/01 Python
python中bytes和str类型的区别
2019/10/21 Python
Python3 操作 MySQL 插入一条数据并返回主键 id的实例
2020/03/02 Python
发现两个有趣的CSS3动画效果
2013/08/14 HTML / CSS
澳大利亚制造的羊皮靴:Original UGG Boots
2017/11/13 全球购物
Otticanet意大利:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/03/10 全球购物
波兰最早的运动鞋精品店之一:Street Supply
2019/08/29 全球购物
Java软件工程师综合面试题笔试题
2013/09/08 面试题
服装设计专业自荐书范文
2013/12/30 职场文书
小学生秋游活动方案
2014/02/23 职场文书
大学信息公开实施方案
2014/03/09 职场文书
“四风”问题对照检查材料思想汇报
2014/09/16 职场文书
2014党员自我评议表范文
2014/09/20 职场文书
教师个人事迹材料
2014/12/17 职场文书
我们的节日元宵节活动总结
2015/02/06 职场文书
公司仓管员岗位职责
2015/04/01 职场文书
行政经理岗位职责
2015/04/15 职场文书
2015年党风廉政建设目标责任书
2015/05/08 职场文书
CSS3实现的3D隧道效果
2021/04/27 HTML / CSS
dubbo集成zipkin获取Traceid的实现
2021/07/26 Java/Android
Python sklearn分类决策树方法详解
2022/09/23 Python