在 ECMAScript 2017 (也称作 ES8)中,对于正则表达式(RegExp)以及 Unicode 相关内容都进行了升级和改进,为前端开发带来了一些全新的功能和改善,本文就来详细介绍一下这些升级和改进。
RegExp 的升级
1. 命名捕获组
在早期的正则表达式中,我们可以使用括号来进行捕获,例如:
----- -- - -------------------------- ----- ----- - ---------------------- --------------------- --------- ---------- -- ------- ----- ----
在 ES8 中,为了方便更好的处理捕获结果,可以使用命名捕获组:
----- -- - ----------------------------------------------- ----- ----- - ---------------------- ------------------------------- -- ------ -------------------------------- -- ---- ------------------------------ -- ----
可以看到,使用命名捕获组能够更加直观地获取捕获的结果。
2. 反向断言
在 ES8 之前,只有前向断言,在正则表达式中使用 x(?=y)
可以表示 x 后面必须跟着 y 才能匹配成功,如:
----- -- - ----------- ----- ----- - ------------ ----------- ---------------------- -- ----
在 ES8 中,可以使用反向断言,使用 (?<=y)x
表示 x 前面必须跟着 y 才能匹配成功,如:
----- -- - ------------- ----- ----- - --------------- ---------------------- -- ----
3. dotAll 模式
在正则表达式中使用 .
表示可以匹配除了换行符(\n)之外的任何字符。在 ES8 中,可以使用 s
标志来开启 dotAll 模式,使用 .
可以匹配换行符。
----- -- - --------------- ----- ----- - ------------------------ ---------------------- -- --------------
Unicode 的改进
在 ES6 中,引入了 Unicode 的相关内容,并且在 ES8 中进一步加强了相关功能。
1. Unicode 属性转义
在正则表达式中,可以使用 \d
表示数字字符,使用 \w
表示字母、数字以及下划线。在 ES8 中,可以使用 \p{PropertyName}
表示 Unicode 属性。例如,使用 \p{Letter}
表示Unicode 中的所有字母字符,如下:
----- -- - --------------- ----- ----- - ----------- -------- ---------------------- -- ----
2. Unicode 字符串的扩展
在 ES8 中,可以使用 String.prototype.normalize()
方法将 Unicode 字符串进行规范化。规范化可以将有多种 Unicode 编码的等价字符转换成同一种规范形式,方便进行比较。
----- ---- - --------------- -- ---- ----- ---- - --------- -- --- ---------------- --- ------ -- ----- ----- -------------- - ----------------- ----- -------------- - ----------------- -------------------------- --- ---------------- -- ----
总结
ES8 中对于 RegExp 和 Unicode 的升级和改进为前端开发带来了更加方便、强大的功能。合理使用这些特性可以让我们的代码更具可读性和灵活性。
代码示例:https://codepen.io/wenjunxiao/pen/PojROzL
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6469d83a968c7c53b09a4eb0