RegExp.prototype.unicodeSets

Baseline 2023
新推出

自 2023 年 9 月起,此功能可在最新的设备和浏览器版本上使用。此功能可能无法在较旧的设备或浏览器上使用。

unicodeSets 属性是 RegExp 实例的一个访问器属性,它返回此正则表达式是否使用了 v 标志。

试一试

const regex1 = /[\p{Lowercase}&&\p{Script=Greek}]/;
const regex2 = /[\p{Lowercase}&&\p{Script=Greek}]/v;

console.log(regex1.unicodeSets);
// Expected output: false

console.log(regex2.unicodeSets);
// Expected output: true

描述

如果使用了 v 标志,则 RegExp.prototype.unicodeSets 的值为 true;否则为 falsev 标志是 u 标志的一个“升级”,它启用了更多与 Unicode 相关的特性。(“v”是字母表中紧随“u”之后的字母。)由于 uv 以不兼容的方式解释相同的正则表达式,因此同时使用这两个标志会产生 SyntaxError。使用 v 标志,您将获得 u 标志描述中提到的所有特性,此外还有:

  • \p 转义序列可以额外用于匹配字符串的属性,而不仅仅是字符。
  • 字符类语法已升级,允许使用交集、并集和差集语法,以及匹配多个 Unicode 字符。
  • 字符类补集语法 [^...] 构建一个补集类,而不是否定匹配结果,从而避免了在不区分大小写匹配时的一些令人困惑的行为。有关更多信息,请参阅 字符类的补集和不区分大小写匹配

一些有效的 u 模式正则表达式在 v 模式下会失效。具体来说,字符类语法不同,并且一些字符不能再以字面形式出现。有关更多信息,请参阅 v 模式字符类

注意: v 模式不会将字形簇解释为单个字符;它们仍然是多个码点。例如,/[🇺🇳]/v 仍然可以匹配 "🇺"

unicodeSets 的设置器为 undefined。您无法直接更改此属性。

示例

使用 unicodeSets 属性

js
const regex = /[\p{Script_Extensions=Greek}&&\p{Letter}]/v;

console.log(regex.unicodeSets); // true

规范

规范
ECMAScript® 2026 语言规范
# sec-get-regexp.prototype.unicodesets

浏览器兼容性

另见