RegExp.prototype.unicode

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

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

Beschreibung

RegExp.prototype.unicode hat den Wert true, wenn das u-Flag verwendet wurde; andernfalls false. Das u-Flag aktiviert verschiedene Funktionen im Zusammenhang mit Unicode. Mit dem "u"-Flag:

  • Jedes Unicode-Codepunkt-Escape (\u{xxxx}, \p{UnicodePropertyValue}) wird als solches interpretiert, anstatt als Identitäts-Escape. Zum Beispiel /\u{61}/u erfasst "a", aber /\u{61}/ (ohne u-Flag) erfasst "u".repeat(61), wobei das \u einem einzelnen u entspricht.
  • Surrogatpaare werden als ganze Zeichen interpretiert, anstatt als zwei separate Zeichen. Zum Beispiel würde /[😄]/u nur "😄" erfassen, aber nicht "\ud83d".
  • Wenn lastIndex automatisch weitergeschaltet wird (wie beim Aufruf von exec()), werden Unicode-Reguläre Ausdrücke nach Unicode-Codepunkten anstelle von UTF-16-Codeeinheiten weitergeschaltet.

Es gibt weitere Änderungen im Parsing-Verhalten, die mögliche Syntaxfehler verhindern (analog zu strict mode für Regex-Syntax). Diese Syntaxen sind alle veraltet und werden nur für die Webkompatibilität beibehalten, und Sie sollten sich nicht darauf verlassen.

Der Set-Accessor von unicode ist undefined. Sie können diese Eigenschaft nicht direkt ändern.

Unicode-basierter Modus

Wenn wir uns auf den Unicode-basierten Modus beziehen, meinen wir, dass der reguläre Ausdruck entweder das u- oder das v Flag hat, in welchem Fall der reguläre Ausdruck Unicode-bezogene Features aktiviert (wie z.B. Unicode-Zeichenklassen-Escape) und viel strengere Syntaxregeln hat. Da u und v denselben regulären Ausdruck auf inkompatible Weisen interpretieren, führt die Verwendung beider Flags zu einem SyntaxError.

Ebenso ist ein regulärer Ausdruck Unicode-unbewusst, wenn er weder das u- noch das v-Flag hat. In diesem Fall wird der reguläre Ausdruck als eine Sequenz von UTF-16-Codeeinheiten interpretiert, und es gibt viele veraltete Syntaxen, die nicht zu Syntaxfehlern werden.

Beispiele

Die unicode-Eigenschaft verwenden

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

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

Spezifikationen

Specification
ECMAScript Language Specification
# sec-get-regexp.prototype.unicode

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch