首页 > IT职业 > IT职场 > 正则表达式学习笔记(5)- ES6新增及参考链接
注:摘自阮一峰老师的《ECMAScript 6 入门》
// 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 sticky,表示是否设置了y标志var r = /test/y;
r.sticky; // true 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' 支持后行断言,具体参看断言所讲
目前,有一个提案,引入了一种新的类的写法p{...}和P{...},允许正则表达式匹配符合Unicode某种属性的所有字符。
// 匹配所有数字
const regex = /^p{Number}+$/u;
regex.test('²³¹¼½¾') // true
regex.test('㉛㉜㉝') // true
regex.test('ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ') // true 《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
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2471/viewspace-2798677/ ,如需转载,请注明出处,否则将追究法律责任。