y修饰符
y和g 都是全局匹配。
区别
g是从上一次匹配的位置开始,继续寻找,直到找到为止。
y,必须是紧跟着的下一个位置匹配成功,才能输出。
实例
{
let s = "bbb_bb_b";
let a1 = /b+/g;
let a2 = /b+/y;
console.log('one',a1.exec(s), a2.exec(s));
console.log('two',a1.exec(s), a2.exec(s));
}
运行结果
第一次(都匹配成功)
one ["bbb", index: 0, input: "bbb_bb_b"] ["bbb", index: 0, input: "bbb_bb_b"]
第二次
two ["bb", index: 4, input: "bbb_bb_b"] null
g:忽略 _
下划线,继续寻找;
y:因为紧跟着的是_
下划线,不符合b+匹配规则,所以匹配失败。
u修饰符(主要用于识别Unicode字符)
字符识别为一项
let str = '\uD83D\uDC2A';
var a1 = /^\uD83D/;
var a2 = /^\uD83D/u;
console.log('normal',a1.test(str)); // normal true
console.log('u',a2.test(str)); // u false
使用注意
识别Unicode编码,必须加上u。例如,/\u{61}/u
如果需要匹配的字符大于2个字节,必须使用u修饰符才能匹配成功。
修正观念
1).
并不能匹配任何字符,它只限定小于2个字节的字符。
2).
不能识别换行符、段落符等等。