20200415
Plan
- 你不知道的 js 下卷第二章
Notes
正则表达式
unicode 标识
let reg1 = /^.-123/u;
let reg2 = /^.-123/;
str = "♪-1234";
reg1.test(str); // true
reg2.test(str); // v8下为true -- 理论上应该为false, 这个特殊的音符会被处理成两个字符,所以无法匹配成功
定点标识
从某个特定 index 开始匹配,默认为 0
非定点例子:
let reg = /foo/;
let str = "+++foo++";
reg.lastIndex; // 0;
reg.test(str); // true
reg.lastIndex = 20;
reg.test(str); // true
reg.lastIndex; // 20 -- 不受影响
定点例子:
let reg = /foo/y;
let str = "+++foo++";
reg.lastIndex; // 0;
reg.test(str); // false -- 在0处匹配不到
reg.lastIndex; // 0 -- 匹配失败,lastIndex会自动切换回0
reg.lastIndex = 3; // 必须手动设置lastIndex
reg.test(str); // true
reg.lastIndex; // 6 -- 往前移动到匹配字符串的结束位置
全局模式
全局模式可以和 exec(...) 方法结合使用
flags
let reg = /foo/gi;
reg.flags; // gi