ITPub博客

首页 > IT职业 > IT职场 > 正则表达式学习笔记(5)- ES6新增及参考链接

正则表达式学习笔记(5)- ES6新增及参考链接

IT职场 作者:hahadelphi 时间:2021-09-09 09:01:21 0 删除 编辑

注:摘自阮一峰老师的《ECMAScript 6 入门》

5. ES6新增

  • 构造函数可以添加第二个规则参数
// es5添加第二个参数时会报错
var regex = new RegExp(/test/, 'i');

// es6
var regex = new RegExp(/test/, 'ig');
regex.flags; // ig
  • 添加了u修饰符,含义为"Unicode"模式,用来正确处理大于uFFFF的Unicode字符。
// uD83DuDC2A会被es5认为是两个字符,加了u之后就会被认定为一个字符
/^uD83D/u.test('uD83DuDC2A'); // false
/^uD83D/.test('uD83DuDC2A');  // true

u字符对正则表达式行为造成的影响,具体参考阮一峰的《ECMAScript 6入门》

  • 添加了y修饰符(粘连修饰符),全局匹配,但必须从剩余字符串的第一个位置进行匹配。
var str = 'aaa_aa_a',
    reg1 = /a+/g,
    reg2 = /a+/y;

reg1.exec(str); // aaa
reg2.exec(str); // aaa

reg1.exec(str); // aa
// 第二次执为null,是因为剩余字符串为_aa_a,必须从头部开始匹配,因此没有匹配到规则`a+`
// 若将reg1和reg2修改为`/a+_/g`和/a+_/y,结果将相同
reg2.exec(str); // null
  • 增加了RegExp实例属性sticky,表示是否设置了y标志
var r = /test/y;
r.sticky;   // true
  • 增加了RegExp实例属性flags,表示正则表达式的修饰符
var r = /test/ig;
r.flags;   // gi
  • 构造函数增加方法RegExp.escape(),表示对字符串转义,用于正则模式
RegExp.escape('The Quick Brown Fox');
// "The Quick Brown Fox"

RegExp.escape('Buy it. use it. break it. fix it.');
// "Buy it. use it. break it. fix it."

RegExp.escape('(*.*)');
// "(*.*)"
  • 增加修饰符s,可以使得.可以匹配任意单个字符,包括行终止符(n,r,U+2018,U+2029)
const re = /foo.bar/s;
// 另一种写法
// const re = new RegExp('foo.bar', 's');

re.test('foonbar') // true
re.dotAll // true
re.flags // 's'
  • 支持后行断言,具体参看断言所讲

  • Unicode属性类

目前,有一个提案,引入了一种新的类的写法p{...}和P{...},允许正则表达式匹配符合Unicode某种属性的所有字符。

// 匹配所有数字
const regex = /^p{Number}+$/u;
regex.test('²³¹¼½¾') // true
regex.test('㉛㉜㉝') // true
regex.test('ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ') // true

6. 参考资料

  • 书籍

《JavaScript Ninja》

《JavaScript高级程序设计(第三版)》

《JavaScript权威指南》

  • 链接

http://blog.csdn.net/u012047933/article/details/38365541

http://www.cnblogs.com/iyangyuan/archive/2013/05/30/3107390.html

http://blog.csdn.net/yuzhongzi81/article/details/45582319

http://www.cnblogs.com/tugenhua0707/p/5037811.html

ECMAScript 6 入门

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2471/viewspace-2798677/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-09-01

  • 博文量
    78
  • 访问量
    8404