ES6学习总结是自己在学习过程中的总结,记笔记就是为了督促自己学习和复习,好记性不如烂笔头。如果有错误,感谢指出。
正则扩展
构造函数的变化
{
let regex = new RegExp('xyz', 'i'); //第一个参数是字符串,第二个是修饰符
let regex2 = new RegExp(/xyz/i);
//es5第一个参数是正则表达式,不接受第二个参数,否则会报错
console.log(regex.test('xyz123'), regex2.test('xyz123'));//true true
//es6中可以接受第二个参数,第二个会覆盖第一个修饰符
let regex3 = new RegExp(/abc/ig, 'i');
console.log(regex3.flags); //原有正则对象的修饰符是ig,后面的修饰符覆盖了前面的
}
新增修饰符
y修饰符
g第二次不要求紧接着的字符一定要匹配上,y要求,所以null
sticky判断正则对象是否开启了带y修饰符的作用
{
let s = 'bbbb_bbb_bb_b';
var a1 = /b+/g;
var a2 = /b+/y;
console.log(a1.exec(s), a2.exec(s)); // ["bbbb"],["bbbb"]
console.log(a1.exec(s), a2.exec(s)); // ["bbb"],null
console.log(a1.sticky, a2.sticky); //false true
}
u修饰符
u会认为test里面是一个整体
总结:
正则中大于2个字符要加修饰符
es6中点不能匹配所有字符
{
console.log('u修饰符',/^\uD83D/.test('\uD83D\uDC2A')); // true
console.log('u修饰符',/^\uD83D/u.test('\uD83D\uDC2A')); // false
// u会认为test里面是一个整体
console.log(/\u{61}/.test('a')); // false
console.log(/\u{61}/u.test('a')); // true
console.log(/\u{20BB7}/u.test('𠮷')); // true
// {61}需要加u才能识别Unicode
// 点(.)字符不能识别码点大于0xFFFF的Unicode字符,必须加上u修饰符。
let s = '𠮷';
console.log('u符',/^.$/.test(s)); // false
console.log('u-2',/^.$/u.test(s)); // true
//字符串大于两个字节,就没办法识别;es5中.匹配任何字符
//20BB7,超过4位,是2个字节了,需要加u
s修饰符
正则表达式中,点(.)是一个特殊字符,代表任意的单个字符,行终止符除外。换行符,回车符 行、段分隔符....点也不能匹配,加S分隔符。
仅为提案。
网友评论