三 . 正则扩展:
1.构造函数的扩展
let regex = new Regex('xyz','i'); let regex2 = new Regex(/xyz/i);
//test() 方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。 console.log(regex.test("xyz123"),regex2.test("xyz123")); //true,true //es6允许第二个参数传两个标识,还可以后面接第二个参数的情况,第二个参 //数会覆盖之前的 let regex3 = new Regex(/xyz/ig,"i"); console.LOG(regex3.flags); // i
2. 全局匹配g和y:
let s='bbb_bb_b'; let a1=/b+/g; let a2=/b+/y; //exec() 方法用于检索字符串中的正则表达式的匹配。 //该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 //null。 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:也是全局匹配,但是要求必须在上次匹配紧跟着的下个字符就要匹配上*/
3.unicode匹配符u :
console.log('u测试1',/^uD83D/.test('uD83DuDC2A')); console.log('u测试2',/^uD83D/u.test('uD83DuDC2A')); //u测试1 true //u测试2 false /* 没加u,会把这4个字节当作两个字符 加了u,把这4个字节当作一个字符 */
console.log('u测试1',/u{61}/.test('a'));//a的unicode编码是61 console.log('u测试1',/u{61}/u.test('a')); //false ,true /* 加u才能识别是unicode编码 */