RegExp.prototype.unicode
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit September 2016 browserübergreifend verfügbar.
Die unicode Zugriffseigenschaft von RegExp-Instanzen gibt zurück, ob das u-Flag mit diesem regulären Ausdruck verwendet wird oder nicht.
Probieren Sie es aus
const regex1 = /\u{61}/;
const regex2 = /\u{61}/u;
console.log(regex1.unicode);
// Expected output: false
console.log(regex2.unicode);
// Expected output: true
Beschreibung
RegExp.prototype.unicode hat den Wert true, wenn das u-Flag verwendet wurde; andernfalls false. Das u-Flag aktiviert verschiedene Unicode-bezogene Funktionen. Mit dem "u"-Flag:
- Alle Unicode-Zeichencodierungs-Escapes (
\u{xxxx},\p{UnicodePropertyValue}) werden als solche interpretiert anstelle von Identitäts-Escapes. Zum Beispiel/\u{61}/uentspricht"a", aber/\u{61}/(ohneu-Flag) entspricht"u".repeat(61), wobei\ueiner einzelnenuentspricht. - Puffergrenzen-Behauptungen (
\A,\z,\Z) werden als solche interpretiert anstelle von Identitäts-Escapes. - Surrogatpaare werden als ganze Zeichen und nicht als zwei separate Zeichen interpretiert. Zum Beispiel würde
/[😄]/unur"😄"entsprechen, aber nicht"\ud83d". - Wenn
lastIndexautomatisch fortgeschaltet wird (wie beim Aufruf vonexec()), werden Unicode-RegExps nach Unicode-Zeichenpunkten anstelle von UTF-16-Codeeinheiten voranschreiten.
Es gibt weitere Änderungen im Parsing-Verhalten, die mögliche Syntaxfehler verhindern (ähnlich dem strengen Modus für Regex-Syntax). Diese Syntaxen sind alle veraltet und nur für Webkompatibilität beibehalten, und Sie sollten sich nicht darauf verlassen.
Der Set-Zugriff von unicode ist undefined. Sie können diese Eigenschaft nicht direkt ändern.
Unicode-bewusster Modus
Wenn wir von Unicode-bewusstem Modus sprechen, meinen wir, dass der Regex entweder das u- oder das v-Flag hat, in welchem Fall der Regex Unicode-bezogene Funktionen aktiviert (wie die Unicode-Zeichenklasseneckefähigkeit) und viel strengere Syntaxregeln hat. Da u und v den gleichen Regex auf inkompatible Weise interpretieren, resultiert die Verwendung beider Flags in einem SyntaxError.
Ähnlich ist ein Regex Unicode-unbewusst, wenn er weder das u- noch das v-Flag hat. In diesem Fall wird der Regex als eine Sequenz von UTF-16-Codeeinheiten interpretiert, und es gibt viele ältere Syntaxen, die nicht zu Syntaxfehlern werden.
Beispiele
>Verwendung der Unicode-Eigenschaft
const regex = /\u{61}/u;
console.log(regex.unicode); // true
Spezifikationen
| Spezifikation |
|---|
| ECMAScript® 2027 Language Specification> # sec-get-regexp.prototype.unicode> |