This was approved on June 26th, 2024 by the Ecma GA. 2024 年 6 月 26 日,第 127 届 Ecma 大会批准了 ECMAScript 2024 语言规范,这意味着它现在正式成为标准。

项目地址:github.com/tc39/ecma26… 文档地址:tc39.es/ecma262/202…

在 JavaScript 正则表达式中,v 标志是 u 标志的扩展,提供了一些新的功能,使得处理 Unicode 和字符类操作更加灵活和强大。本文将详细解读 v 标志的两大主要功能,并展示如何在实际编码中应用这些功能。

Unicode 属性

v 标志引入了对 Unicode 属性的支持,通过 \p{...}\P{...} 语法,开发者可以根据字符的 Unicode 属性来构造正则表达式。例如,\p{RGI_Emoji} 用于匹配任何表情符号,而 \p{White_Space} 匹配所有空白字符。

示例代码

 1const re = /^\p{RGI_Emoji}$/v;
 2
 3
 4console.log(re.test('⚽')); 
 5
 6
 7console.log(re.test('👨🏾‍⚕️')); 

在上面的代码中,正则表达式 ^\p{RGI_Emoji}$ 匹配任何单一表情符号,包括复杂的组合表情符号。这种功能使得正则表达式可以更加准确地处理各种 Unicode 字符。

集合操作

v 标志还允许在字符类之间进行集合操作,这意味着可以使用 && 操作符执行字符类的交集。例如,表达式 [\p{White_Space}&&\p{ASCII}] 匹配既是空白字符又是 ASCII 字符的字符。

示例代码

 1const re = /[\p{White_Space}&&\p{ASCII}]/v;
 2
 3
 4console.log(re.test('\n')); 
 5
 6
 7console.log(re.test('\u2028')); 

在这个例子中,正则表达式 [\p{White_Space}&&\p{ASCII}] 用于匹配 ASCII 空白字符,如换行符,但不匹配其他 Unicode 空白字符(如行分隔符)。这种集合操作为字符匹配提供了更精确的控制。

总结

v 标志增强了 JavaScript 正则表达式在处理 Unicode 和字符类操作方面的能力。通过 Unicode 属性转义和字符类集合操作,开发者可以更高效地处理各种文本数据。这使得正则表达式在现代应用中的应用变得更加灵活和强大。

个人笔记记录 2021 ~ 2025