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 相关文章推荐
仅IE9/10同时支持script元素的onload和onreadystatechange事件分析
Apr 27 Javascript
整理8个很棒的 jQuery 倒计时插件和教程
Dec 12 Javascript
8个超实用的jQuery功能代码分享
Jan 08 Javascript
原生js实现放大镜效果
Jan 11 Javascript
详解Vue中过度动画效果应用
May 25 Javascript
小程序tab页无法传递参数的方法
Aug 03 Javascript
vue项目中使用tinymce编辑器的步骤详解
Sep 11 Javascript
详解angular2如何手动点击特定元素上的点击事件
Oct 16 Javascript
React中this丢失的四种解决方法
Mar 12 Javascript
js数据类型转换与流程控制操作实例分析
Dec 18 Javascript
详解Vue 单文件组件的三种写法
Feb 19 Javascript
javascript用defineProperty实现简单的双向绑定方法
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之生成GIF动画的实现方法
2013/06/07 PHP
解析php中用PHPMailer来发送邮件的示例(126.com的例子)
2013/06/24 PHP
set_exception_handler函数在ThinkPHP中的用法
2014/10/31 PHP
什么是PEAR?什么是PECL?PHP中两个容易混淆的概念解释
2015/07/01 PHP
学习php设计模式 php实现桥梁模式(bridge)
2015/12/07 PHP
Laravel-添加后台模板AdminLte的实现方法
2019/10/08 PHP
JS 面向对象之神奇的prototype
2011/02/26 Javascript
javaScript array(数组)使用字符串作为数组下标的方法
2013/11/19 Javascript
通过隐藏iframe实现文件下载的js方法介绍
2014/02/26 Javascript
js获取时间精确到秒(年月日)
2016/03/16 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
2016/12/14 Javascript
使用snowfall.jquery.js实现爱心满屏飞的效果
2017/01/05 Javascript
js实现图片上传预览原理分析
2017/07/13 Javascript
Vuejs实现购物车功能
2017/11/05 Javascript
微信小程序自定义导航教程(兼容各种手机)
2018/12/12 Javascript
Vue自定义属性实例分析
2019/02/23 Javascript
vue elementUI 表单校验功能之数组多层嵌套
2019/06/04 Javascript
js判断密码强度的方法
2020/03/18 Javascript
Python引用(import)文件夹下的py文件的方法
2014/08/26 Python
Python最基本的数据类型以及对元组的介绍
2015/04/14 Python
Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
2017/06/20 Python
TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
2019/08/05 Python
python 动态迁移solr数据过程解析
2019/09/04 Python
Clarks英国官方网站:全球领军鞋履品牌
2016/11/26 全球购物
美国时尚配饰品牌:Dooney & Bourke
2017/11/14 全球购物
德国玩具商店:Planet Happy DE
2021/01/16 全球购物
甲方资料员岗位职责
2013/12/13 职场文书
电子商务应届生自我鉴定
2014/01/13 职场文书
《记金华的双龙洞》教学反思
2014/04/19 职场文书
实习单位鉴定评语
2014/04/26 职场文书
倡议书范文格式
2014/05/12 职场文书
会计工作态度自我评价
2015/03/06 职场文书
2015年度绩效考核工作总结
2015/05/27 职场文书
大队委员竞选稿
2015/11/20 职场文书
html5移动端禁止长按图片保存的实现
2021/04/20 HTML / CSS
python实现手机推送 代码也就10行左右
2022/04/12 Python