Es6学习笔记4

Posted by JayZhao on 2018-04-23

Es6学习笔记4

链接

正则的扩展

1.RegExp 构造函数

Es6 允许第一个参数为正则表达式的时候,第二个参数为修饰符,此时修饰符会覆盖旧的修饰符。

2.字符串的正则方法

字符串共有 match(), replace(),search(),split()四个使用正则表达式的函数,Es6中这四个方法语言内部都是定义作用在 RegExp 对象上实现的。

3. u 字符

u 字符意思是 ‘unicode 模式’ ,Es6 中,u 字符修饰的正则表达式系统会认为该字符串为一个字符。(对于四字节字符而言)

几点影响:

  • 点字符:点字符在正则中会表示除了换行符之外的任何字符,但是当匹配 四字节字符的时候要加上 u 字符,否则,系统会认为匹配的是两个字符,会匹配失败。

  • Unicode 字符表示法,Es6 中使用大括号表示 Unicode 字符,但是当出现在正则表达式中的时候必须加上 u 字符。

  • 量词:使用u修饰符后,所有量词都会正确识别码点大于0xFFFF的 Unicode 字符。

  • 预定义模式:u修饰符也影响到预定义模式,能否正确识别码点大于0xFFFF的 Unicode 字符。

  • i 修饰符:有些 Unicode 字符的编码不同,但是字型很相近,比如,\u004B\u212A都是大写的K

4. y 修饰符

与 g 字符有些相似,但 y 字符具有粘连效果。确保匹配必须从剩余的第一个位置开始。

5. sticky 属性

y修饰符相匹配,ES6 的正则对象多了sticky属性,表示是否设置了y修饰符

6.flags 属性

ES5 提供了 source 属性返回正则表达式的正文。
ES6 为正则表达式新增了flags属性,会返回正则表达式的修饰符。

7. s 修饰符:dotAll 模式

s 使得点(.)可匹配任意单字符。

8. 后行断言

ES2018 引入后行断言。

9. Unicode 属性类

ES2018 引入了一种新的类的写法\p{...}\P{...},允许正则表达式匹配符合 Unicode 某种属性的所有字符。

10. 具名组匹配

正则表达式使用圆括号进行组匹配,以数组的形式引用。
ES2018 引入了具名组匹配,允许为每一组指定一个名字,即 id,此时可通过数字序号和 Id两种方式处理。

具名组匹配和解构赋值结合使用 可直接从匹配结果上为变量赋值
字符串替换时,使用$<组名>引用具名组
结合模版字符串的使用:

1
2
3
4
let re = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/u;

'2015-01-02'.replace(re, '$<day>/$<month>/$<year>')
// '02/01/2015'

String.prototype.matchAll

一次性取出所有匹配。