ES6学习(二)正则的扩展
2017-12-31 23:59
260 查看
一、RegExp 构造函数
在 ES5 中,RegExp构造函数的参数有两种情况
①let regex = new RegExp('xyz', 'i'); //第一个参数是字符串,第二个参数表示正则表达式的修饰符(flag) ②let regex2 = new RegExp(/xyz/i); //参数是一个正则表示式 在这种情况下,ES5 不允许此时使用第二个参数添加修饰符,否则会报错。例如var regex2 = new RegExp(/xyz/, 'i')这种写法,就会报错。 console.log(regex.test('xyz123'),regex2.test('xyz123'));// true true
在ES6中改善了这种写法,如果RegExp构造函数第一个参数是一个正则对象,那么可以使用第二个参数指定修饰符。而且,返回的正则表达式会忽略原有的正则表达式的修饰符,只使用新指定的修饰符。
let regex3 = new RegExp(/abc/ig, 'i'); console.log(regex3.flags);ES6 为正则表达式新增了flags属性,会返回正则表达式的修饰符 //原有正则对象的修饰符是ig,它会被第二个参数i覆盖,最后得到结果是i
二、y修饰符
y修饰符和g修饰符都是全局匹配,不同之处在于,g修饰符只要剩余位置中存在匹配就可,而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 y修饰符必须要求是b开头的,所以导致匹配失败 console.log(a1.sticky, a2.sticky); //判断是否开启了Y修饰符模式
三、u修饰符
u修饰符,含义为“Unicode 模式”,用来正确处理大于\uFFFF的 Unicode 字符。也就是说,会正确处理四个字节的 UTF-16 编码。console.log('u修饰符',/^\uD83D/.test('\uD83D\uDC2A')); // true \uD83D\uDC2A是一个四个字节的 UTF-16 编码,代表一个字符。但是,ES5 不支持四个字节的 UTF-16 编码,会将其识别为两个字符,导致第二行代码结果为true console.log('u修饰符',/^\uD83D/u.test('\uD83D\uDC2A')); // false 加了u修饰符以后,ES6 就会识别其为一个字符,所以第一行代码结果为false。
Unicode 字符表示法
/\u{61}/.test('a') // false 匹配 61 个连续的u /\u{61}/u.test('a') // true
ES6 新增了使用大括号表示 Unicode 字符,这种表示法在正则表达式中必须加上u修饰符,才能识别当中的大括号,否则会被解读为量词。
参考:http://es6.ruanyifeng.com/#docs/regex
相关文章推荐
- ES6笔记:正则的扩展
- 14.egrep扩展正则表达式
- jQuery validate 扩展正则验证
- Linux扩展正则表达式及sed生产环境用法
- PHP扩展之文本处理(二)——PCRE正则表达式语法2——元字符
- PHP扩展之文本处理(三)——POSIX正则表达式函数及使用示例
- grep的基本正则表达式及扩展表达式
- Java基础知识强化74:正则表达式之分割功能 (扩展练习)
- 正则的扩展
- easyui 正则表达式验证扩展(…
- Python 学习笔记(六)正则扩展标记
- ES6学习5章:正则&数值扩展
- SQL2005CLR函数扩展-正则表达式
- linux egrp扩展正则表达式
- java---正则表达式的字符串简单实用及扩展链接
- perl/pcre正则表达式-选项/扩展模式
- 正则扩展
- firefox扩展,正则表达式
- ES6正则表达式扩展
- PHP扩展之文本处理(二)——PCRE正则表达式语法3——转义序列(反斜线)