Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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}/u entspricht "a", aber /\u{61}/ (ohne u-Flag) entspricht "u".repeat(61), wobei \u einer einzelnen u entspricht.
  • 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 /[😄]/u nur "😄" entsprechen, aber nicht "\ud83d".
  • Wenn lastIndex automatisch fortgeschaltet wird (wie beim Aufruf von exec()), 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

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

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

Spezifikationen

Spezifikation
ECMAScript® 2027 Language Specification
# sec-get-regexp.prototype.unicode

Browser-Kompatibilität

Siehe auch