试一试
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”之后的字母。)由于 uu 和 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 |
浏览器兼容性
加载中…