ECMAScript 2018 (ES9) 在 6 月底正式发布,带来了很多新特性。关于 ES7 和 ES8 相关的知识,可以查看这篇文章 ES2016 和 ES2017 学习。目前大部分 ES7 和 ES8 的特性都得到主流浏览器的支持,而 ES9 的新特性还未能实现很好的兼容性。
关于 ES7/8/9 全部特性可以查看 tc39 官方的 proposals,这些都是最后进入 stage 4 的特性。
ES9 的新特性:
- Lifting template literal restriction 模板语法修正
s
(dotAll) flag for regular expressions (正则表达式 dotAll 模式)- RegExp named capture groups (正则表达式命名捕获组)
- Rest/Spread Properties (Rest/Spread 属性)
- RegExp Lookbehind Assertions (正则表达式反向(lookbehind)断言)
- RegExp Unicode Property Escapes (正则表达式 Unicode 转义)
- Promise.prototype.finally
- Asynchronous Iteration (异步迭代器)
正则表达式 dotAll 模式
dotAll 是一个新的正则表达式修饰符,目前 JS 拥有的修饰符有:
- g -> global
- i -> ingoreCase
- m -> multiline
- y -> sticky
- u -> unicode
- s -> dotAll
正则表达式中的 .
用来匹配任何单个字符,但是有 2 个除外:多字节 emoji 字符和行终结符。
let regex = /^.$/
regex.test('