es6 语法 (正则扩展)

时间:2023-03-09 17:21:32
es6 语法 (正则扩展)

{
//es5中
let regex = new RegExp('xyz', 'i');
let regex2 = new RegExp(/xyz/i);
console.log(regex.test('xyz123'), regex2.test('xyz123')); // true,true

//es6中,flags是新增的,获取正则对象修饰符
let regex3 = new RegExp(/xyz/ig, 'i');
console.log(regex3.flags); // i 后一个覆盖前面的
}
//es5中常见修饰符是g、i;es6中新增 y,u
//exec() 方法用于检索字符串中的正则表达式的匹配。
{
let s = 'bbb_bb_b';
let a1 = /b+/g; //g忽略_从上一次匹配的位置继续寻找
let a2 = /b+/y; //y不忽略。匹配不上
console.log('one', a1.exec(s), a2.exec(s)); //bbb bbb
console.log('two', a1.exec(s), a2.exec(s)); //bb null
console.log('three', a1.exec(s), a2.exec(s)); //b bbb
//新增sticky,判断是否又y修饰符
console.log(a1.sticky, a2.sticky); //false true
} {
console.log('u-1', /^\uD83D/.test('\uD83D\uDC2A')); //true 分隔了\uD83D 和 \uDC2A
console.log('u-1', /^\uD83D/u.test('\uD83D\uDC2A')); //false 把\uD83D\uDC2A 当成一体了
console.log(/\u{61}/.test('a')); //false
console.log(/\u{61}/u.test('a'));//true 加上u才能被识别
console.log(`\u{20BB7}`); //