试一试
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
;否则为 false
。v
标志是
标志的一个“升级”,它启用了更多与 Unicode 相关的特性。(“v”是字母表中紧随“u”之后的字母。)由于 u
u
和 v
以不兼容的方式解释相同的正则表达式,因此同时使用这两个标志会产生 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 |
浏览器兼容性
加载中…