RegExp.prototype.unicode

Baseline 已廣泛支援

此特性已非常成熟,可在多種裝置和瀏覽器版本上使用。自 ⁨2016 年 9 月⁩以來,它已在各大瀏覽器中可用。

unicode 訪問器屬性屬於 RegExp 例項,用於返回該正則表示式是否使用了 u 標誌。

試一試

const regex1 = /\u{61}/;
const regex2 = /\u{61}/u;

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

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

描述

如果使用了 u 標誌,則 RegExp.prototype.unicode 的值為 true;否則為 falseu 標誌啟用各種與 Unicode 相關的特性。使用 "u" 標誌時:

  • 任何 Unicode 程式碼點轉義\u{xxxx}\p{UnicodePropertyValue})將被解釋為 Unicode 程式碼點,而不是普通轉義。例如,/\u{61}/u 匹配 "a",而 /\u{61}/(不帶 u 標誌)匹配 "u".repeat(61),其中 \u 等同於單個 u
  • 代理對將被解釋為整個字元,而不是兩個單獨的字元。例如,/[😄]/u 只會匹配 "😄",而不會匹配 "\ud83d"
  • lastIndex 自動前進時(例如,在呼叫 exec() 時),Unicode 正則表示式會按 Unicode 程式碼點前進,而不是按 UTF-16 程式碼單元前進。

解析行為的其他一些更改可以防止潛在的語法錯誤(這類似於正則表示式語法的 嚴格模式)。這些語法都已被 棄用,僅為保持 Web 相容性而保留,您不應依賴它們。

unicode 的設定訪問器為 undefined。您無法直接更改此屬性。

Unicode 感知模式

當我們提到Unicode 感知模式時,意味著正則表示式同時具有 uv 標誌,此時正則表示式會啟用 Unicode 相關特性(例如 Unicode 字元類轉義)並具有更嚴格的語法規則。由於 uv 以不相容的方式解釋相同的正則表示式,因此同時使用這兩個標誌會導致 SyntaxError

類似地,如果正則表示式既沒有 u 標誌也沒有 v 標誌,則該正則表示式被視為Unicode 不感知。在這種情況下,正則表示式被解釋為 UTF-16 程式碼單元序列,並且存在許多不會導致語法錯誤的舊式語法。

示例

使用 unicode 屬性

js
const regex = /\u{61}/u;

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

規範

規範
ECMAScript® 2026 語言規範
# sec-get-regexp.prototype.unicode

瀏覽器相容性

另見