ES5 中的修饰符:i
用于忽略大小写;m
用于多行匹配;g
用于全局匹配。
ES6 提供了2个新的修饰符:y
为粘连修饰符;u
表示开启unicode模式。
y
修饰符与g
修饰符非常相似,都表示全局匹配,后一次匹配都是从前一次匹配成功的下一个位置开始。g
是剩余的字符串里有要求的子串即可,y
是从剩余字符串中的第一位开始匹配。
1 2 3 4 5 6 7 8 9 10 11 12
| const str = 'aaa_aa_a' const reg1 = /a+/g const reg2 = /a+/y
console.log(reg1.exec(str)) console.log(reg2.exec(str))
console.log(reg1.exec(str)) console.log(reg2.exec(str))
console.log(reg1.exec(str)) console.log(reg2.exec(str))
|
上节说过,ES5 中 unicode 的码点范围是 0000~ffff。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
const str = '\uD842\uDFB7' console.log(/^\uD842/.test(str)) console.log(/^\uD842/u.test(str))
console.log(/^.$/.test(str)) console.log(/^.$/u.test(str))
console.log(/\u{61}/.test('a')) console.log(/\u{61}/u.test('a'))
console.log(/𠮷{2}/.test('𠮷𠮷')) console.log(/𠮷{2}/u.test('𠮷𠮷'))
|