ES9 中的 JSON 和正则表达式新特性

阅读时长 4 分钟读完

ES9,全称为 ECMAScript 2018,是 JavaScript 语言的最新版本。其中包括了很多新特性,其中涉及到了 JSON 和正则表达式的更新。本文将详细介绍这些新特性的更新内容,并通过示例代码来演示其使用。

JSON 的新特性

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。在 ES9 中,JSON 有了以下更新:

支持直接转义 U+2028 和 U+2029

在 ES5 中,JSON 输出时需要手动将 U+2028 和 U+2029 转义为\u2028 和\u2029,而在 ES9 中,JSON 直接支持这两个转义字符的输出。

-- -------------------- ---- -------
-- ---
-
  ------------ ----- -- - ------------------- - ---- -----------------------
-

-- ---
-
  ------------ ----- -- - ---------
---- - ---- ---------
--------
-

允许 NUL 字符 (\u0000) 作为字符串

在 ES5 中,使用 JSON.stringify() 方法将带有 \u0000 字符的字符串进行 JSON 编码时会抛出异常。但在 ES9 中,允许 NUL 字符作为字符串一部分。

支持在 JSON.parse() 中使用 reviver 函数的第二个参数

JSON.parse() 方法允许通过第二个可选参数来提供一个"reviver"函数,在解析过程中修改解析出的属性对应的值。在 ES9 中,该 reviver 函数现在可以接收第二个参数,该参数是属性键名及其值的位置。

在上面的例子中,reviver 函数打印出了每个属性键名及其值在 JSON 文本中的位置。

正则表达式的新特性

正则表达式是一种高级模式匹配语言,JS 中自 ES6 就有了很多正则表达式的新特性。在 ES9 中,正则表达式有了如下新特性:

支持 s 修饰符

在 ES9 前,正则表达式中使用(.)匹配除换行符外的任意字符。在 ES9 中,可以在正则表达式末尾添加 s 修饰符,则(.)可以匹配任何字符,包括\n。

支持 named capture groups

ES9 支持在正则表达式中捕获命名子串,即所谓的捕获组。named capture groups 的写法为:(?<name>)

支持 lookbehind 和 negative lookbehind 断言

lookbehind 断言用于查找后面紧跟着满足某种条件的字符串,并返回该字符串之前的内容。ES9 中新增了 lookbehind 和 negative lookbehind 断言。分别使用(?<=)和(?<!)语法定义。

在上述例子中,pattern 正则表达式使用了 lookbehind 断言,即查找在 $$ 后面的数字。

总结

以上就是 ES9 中 JSON 和正则表达式的新特性。其中,JSON 的更新主要在规范化输出的语法上做了优化,而正则表达式则新增了一些实用功能。掌握这些新特性,能够帮助开发人员更加便捷地使用 JSON 和正则表达式,并提升开发效率。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64f02f86f6b2d6eab3a21139

纠错
反馈