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 相关文章推荐
javascript URL锚点取值方法
Feb 25 Javascript
jquery选择器使用详解
Apr 08 Javascript
js删除数组元素、清空数组的简单方法(必看)
Jul 27 Javascript
郁闷!ionic中获取ng-model绑定的值为undefined如何解决
Aug 27 Javascript
jQuery检查元素存在性(推荐)
Sep 17 Javascript
js仿微信抢红包功能
Sep 25 Javascript
jQuery实现的页面遮罩层功能示例【测试可用】
Oct 14 jQuery
利用ECharts.js画K线图的方法示例
Jan 10 Javascript
手把手教你使用TypeScript开发Node.js应用
May 06 Javascript
vue 集成jTopo 处理方法
Aug 07 Javascript
vue柱状进度条图像的完美实现方案
Aug 26 Javascript
layui 富文本赋值,取值,取纯文本值的实例
Sep 18 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/07/17 PHP
php使用codebase生成随机数
2014/03/25 PHP
PHP实现的简单操作SQLite数据库类与用法示例
2017/06/19 PHP
PHP中检查isset()和!empty()函数的必要性
2019/02/13 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
2020/03/27 PHP
Yii 框架入口脚本示例分析
2020/05/19 PHP
Javascript load Page,load css,load js实现代码
2010/03/31 Javascript
JQuery动态创建DOM、表单元素的实现代码
2011/08/09 Javascript
解决javascript:window.close()在chrome,Firefox下失效的问题
2013/05/07 Javascript
onbeforeunload与onunload事件异同点总结
2013/06/24 Javascript
jquery获取选中的文本和值的方法
2014/07/08 Javascript
完美实现八种js焦点轮播图(上篇)
2016/07/18 Javascript
JavaScript每天必学之基础知识
2016/09/17 Javascript
jQuery点击头像上传并预览图片
2017/02/23 Javascript
JS实现的模仿QQ头像资料卡显示与隐藏效果
2017/04/07 Javascript
Angular-UI Bootstrap组件实现警报功能
2018/07/16 Javascript
原生JS实现$.param() 函数的方法
2018/08/10 Javascript
Vue实现导航栏的显示开关控制
2019/11/01 Javascript
vue cli4下环境变量和模式示例详解
2020/04/09 Javascript
Python读写Redis数据库操作示例
2014/03/18 Python
python实现通过shelve修改对象实例
2014/09/26 Python
Python编程判断这天是这一年第几天的方法示例
2017/04/18 Python
python的dataframe和matrix的互换方法
2018/04/11 Python
python pcm音频添加头转成Wav格式文件的方法
2019/01/09 Python
Python中的十大图像处理工具(小结)
2019/06/10 Python
基于Python爬取爱奇艺资源过程解析
2020/03/02 Python
利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)
2020/09/04 Python
Python使用xpath实现图片爬取
2020/09/16 Python
美国最大的香水连锁店官网:Perfumania
2016/08/15 全球购物
在家更换处方镜片:Lensabl
2019/05/01 全球购物
个人优缺点自我评价
2014/01/27 职场文书
《小池塘》教学反思
2014/02/28 职场文书
2014乡党委副书记党建工作汇报材料
2014/11/02 职场文书
关于成立领导小组的通知
2015/04/23 职场文书
幼儿园教师安全责任书
2015/05/08 职场文书
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
2021/03/29 PHP