試一試
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 |
瀏覽器相容性
載入中…