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 相关文章推荐
新老版本juqery获取radio对象的方法
Mar 01 Javascript
js实现Select下拉框具有输入功能的方法
Feb 06 Javascript
JavaScript仿静态分页实现方法
Aug 04 Javascript
jQuery实现淡入淡出二级下拉导航菜单的方法
Aug 28 Javascript
BootStrap与validator 使用笔记(JAVA SpringMVC实现)
Sep 21 Javascript
Bootstrap popover用法详解
Dec 22 Javascript
JavaScript实现大图轮播效果
Jan 11 Javascript
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
May 20 jQuery
js实现简易聊天对话框
Aug 17 Javascript
Vue中对拿到的数据进行A-Z排序的实例
Sep 25 Javascript
深度了解vue.js中hooks的相关知识
Jun 14 Javascript
原生js+css实现tab切换功能
Sep 17 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
重置版游戏视频
2020/04/09 魔兽争霸
PHP取整数函数常用的四种方法小结
2012/07/05 PHP
下拉列表多级联动dropDownList示例代码
2013/06/27 PHP
使用php完成常见的文件上传功能(推荐)
2017/01/13 PHP
php连接mysql数据库最简单的实现方法
2019/09/24 PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
2019/10/08 PHP
php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次)
2020/07/24 PHP
xml和web特殊字符
2009/04/28 Javascript
Prototype 学习 工具函数学习($方法)
2009/07/12 Javascript
jquery 锁定弹出层实现代码
2010/02/23 Javascript
跟我一起学写jQuery插件开发方法(附完整实例及下载)
2010/04/01 Javascript
JavaScript中的isXX系列是否继续使用的分析
2011/04/16 Javascript
浅析JavaScript中的事件机制
2015/06/04 Javascript
详解nodejs 文本操作模块-fs模块(二)
2016/12/22 NodeJs
JS实现禁止用户使用Ctrl+鼠标滚轮缩放网页的方法
2017/04/28 Javascript
浅谈关于.vue文件中style的scoped属性
2017/08/19 Javascript
js处理包含中文的字符串实例
2017/10/11 Javascript
详解NODEJS的http实现
2018/01/04 NodeJs
react实现换肤功能的示例代码
2018/08/14 Javascript
vue移动端的左右滑动事件详解
2020/06/17 Javascript
python BeautifulSoup使用方法详解
2013/11/21 Python
Python信息抽取之乱码解决办法
2017/06/29 Python
python爬虫使用cookie登录详解
2017/12/27 Python
python实现图书管理系统
2018/03/12 Python
python opencv 简单阈值算法的实现
2019/08/04 Python
python框架django项目部署相关知识详解
2019/11/04 Python
python 实现图片上传接口开发 并生成可以访问的图片url
2019/12/18 Python
python3发送request请求及查看返回结果实例
2020/04/30 Python
Python手动或自动协程操作方法解析
2020/06/22 Python
pandas按照列的值排序(某一列或者多列)
2020/12/13 Python
HTML5 常用语法一览(列举不支持的属性)
2010/01/26 HTML / CSS
美国求婚钻戒网站:Super Jeweler
2016/08/27 全球购物
Paul’s Boutique官网:英国时尚手袋品牌
2018/03/31 全球购物
企业法人授权委托书范本
2014/09/23 职场文书
后进生评语大全
2015/01/04 职场文书
2015年工程师工作总结
2015/04/30 职场文书