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

瀏覽器相容性

另見