首页 / ES6 / ES6学习总结之 正则表达式
ES6学习总结之 正则表达式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了ES6学习总结之 正则表达式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1535字,纯文字阅读大概需要3分钟。
内容图文
![ES6学习总结之 正则表达式](/upload/InfoBanner/zyjiaocheng/1240/0def1f37e1a449eca92bd18df40f6e4e.jpg)
整体来说,ES6对正则表达式的更新和改变不多也不难,下面简单总结于下
1.RegExp构造函数
ES5 RegExp构造函数只能接受字符串作为参数,而ES6中,其可以接受正则表达式作为参数
var reg = new RegExp(/xyz/i)
如果使用RegExp的构造函数的第二个参数指定修饰符,那么返回的正则表达式会忽略其原有的的修饰符
2.字符串的正则方法
字符串的四个可以使用正则表达式的方法:match(),replace(),search(),split(),ES6中在语言内部都调用了RegExp的实例方法,
从而做到所有与正则相关的方法都定义在RegExp对象上
3.u修饰符
ES6中的u修饰符专门用来正确处理大于 \uFFFF的Unicode字符,可以正确的处理4个字节的UTF-16编码
/^\uD83D/u.test(‘\uD83D\uDC2A‘) // false /^\uD83D/.test(‘\uD83D\uDC2A‘) // true
上述代码中,test内的内容是一个4字节的UTF-16编码,代表一个字符。由于ES5不支持4字节的UTF-16编码,会将其识别为2个字符,导致第二行匹配成功,结果为true;
而第一行,加了u修饰符,ES6就会将其识别为一个字符,所以匹配不成功,结果为false。
3.1 点字符
点字符在正则表达式中表示除了换行符以外的任意单个字符,对于码点 大于0xFFFF的unicode字符,点字符不能识别,必须加上u修饰符
var s = "??" /^.$/.test(s) //false /^.$/u.test(s) //true
3.2 量词
使用u修饰符后,所有的量词都会正确的识别大于0xFFFF的Unicode字符
/??{2}/.test(‘????‘) //false /??{2}/u.test(‘????‘) //true
3.3 预定义模式
u修饰符也影响到预定义模式能否正确识别码点 大于0xFFFF的unicode字符
/^\S$/.test(‘??‘) //false /^\S$/u.test(‘??‘) //true
3.4 i修饰符
有些Unicode字符编码不同,但是字型很接近,比如 \u004B 和 \u212A 都是大写的K,不加u修饰符,就无法识别非规范的K字符
/[a-z]/i.test(‘\u212A‘) //false /[a-z]/iu.test(‘\u212A‘) //true
4.y修饰符
ES6新增加了y修饰符,叫做黏连修饰符(sticky)。
y修饰符和g修饰符类似,也是全局匹配,后一次匹配都从第一次匹配成功的下一个位置开始。不同之处在于,g修饰符只要剩余位置中存在匹配就行,而y修饰符会确保匹配必须从剩余的第一个位置开始,
这就是黏连的意思
var s = "bbb_bb_b" var p1 = /b+/g var p2 = /b+/y p1.exec(s) = ["bbb"] p2.exec(s) = ["bbb"] p1.exec(s) = ["bb"] p2.exec(s) = null
5.sticky属性
与y修饰符相匹配,ES6的正则对象多了sticky属性,表示是否设置了y修饰符
var r = /hello\d/y r.sticky = true
6.flags属性
ES6为正则表达式新增了flags属性,会返回正则表达式的修饰符
/dss/ig.flags //‘gi‘
原文:http://www.cnblogs.com/Cathamerst/p/7341625.html
内容总结
以上是互联网集市为您收集整理的ES6学习总结之 正则表达式全部内容,希望文章能够帮你解决ES6学习总结之 正则表达式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。