Zeichen-Escape-Sequenz: \n, \u{...}
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.
Eine Zeichen-Escape-Sequenz stellt ein Zeichen dar, das sich möglicherweise nicht ohne Weiteres in seiner wörtlichen Form darstellen lässt.
Syntax
\f, \n, \r, \t, \v
\cA, \cB, …, \cz
\0
\^, \$, \\, \., \*, \+, \?, \(, \), \[, \], \{, \}, \|, \/
\xHH
\uHHHH
\u{H…H}
Hinweis:
, ist kein Teil der Syntax.
Parameter
H…H-
Eine Hexadezimalzahl, die den Unicode-Codepunkt des Zeichens angibt. Die Form
\xHHmuss zwei Hexadezimalziffern enthalten, die Form\uHHHHvier. Die Form\u{H…H}muss eine oder mehrere Hexadezimalziffern enthalten, die einen Wert von höchstens0x10FFFFdarstellen.
Beschreibung
Die folgenden Zeichen-Escape-Sequenzen werden in regulären Ausdrücken erkannt:
\f,\n,\r,\t,\v-
Sie haben dieselbe Bedeutung wie in String-Literalen, mit Ausnahme von
\b: In regulären Ausdrücken steht es für eine Wortgrenze, sofern es nicht innerhalb einer Zeichenklasse steht. \cgefolgt von einem Buchstaben vonAbisZoderabisz-
Stellt das Steuerzeichen dar, dessen Wert dem Zeichenwert des Buchstabens modulo 32 entspricht. Beispielsweise steht
\cJfür einen Zeilenumbruch (\n), da der Codepunkt vonJ74 ist und 74 modulo 32 den Wert 10 ergibt – den Codepunkt des Zeilenumbruchs. Da sich die Werte eines Großbuchstabens und seines Kleinbuchstabens um 32 unterscheiden, sind\cJund\cjgleichbedeutend. Auf diese Weise lassen sich Steuerzeichen mit den Werten 1 bis 26 darstellen. \0-
Stellt das Zeichen U+0000 NUL dar. Darauf darf keine Ziffer folgen, da daraus sonst eine veraltete oktale Escape-Sequenz wird.
\^,\$,\\,\.,\*,\+,\?,\(,\),\[,\],\{,\},\|,\/-
Stellt jeweils das Zeichen selbst dar. Beispielsweise steht
\\für einen umgekehrten Schrägstrich und\(für eine öffnende Klammer. Dies sind Syntaxzeichen in regulären Ausdrücken (/begrenzt ein reguläres Ausdrucksliteral). Deshalb müssen sie mit einer Escape-Sequenz versehen werden, sofern sie nicht innerhalb einer Zeichenklasse stehen. \xHH-
Stellt das Zeichen mit dem angegebenen hexadezimalen Unicode-Codepunkt dar. Die Hexadezimalzahl muss genau zwei Ziffern lang sein.
\uHHHH-
Stellt das Zeichen mit dem angegebenen hexadezimalen Unicode-Codepunkt dar. Die Hexadezimalzahl muss genau vier Ziffern lang sein. Zwei solcher Escape-Sequenzen können im Unicode-bewussten Modus ein Surrogatpaar darstellen. (Im nicht Unicode-bewussten Modus sind es immer zwei getrennte Zeichen.)
\u{H…H}-
(Nur im Unicode-bewussten Modus) Stellt das Zeichen mit dem angegebenen hexadezimalen Unicode-Codepunkt dar. Die Hexadezimalzahl muss mindestens eine Ziffer enthalten und darf höchstens den Wert
0x10FFFFhaben. Führende Nullen sind zulässig, sodass die Zahl beliebig lang sein kann.
Im nicht Unicode-bewussten Modus werden Escape-Sequenzen, die nicht zu den oben genannten gehören, zu Identity-Escape-Sequenzen: Sie stellen das Zeichen dar, das auf den umgekehrten Schrägstrich folgt. Beispielsweise steht \a für das Zeichen a. Dieses Verhalten erschwert die Einführung neuer Escape-Sequenzen, ohne Probleme mit der Abwärtskompatibilität zu verursachen. Daher sind solche Escape-Sequenzen im Unicode-bewussten Modus nicht zulässig.
Im nicht Unicode-bewussten Modus dürfen ], { und } wörtlich vorkommen, wenn sie sich nicht als Ende einer Zeichenklasse oder als Begrenzungszeichen eines Quantifizierers interpretieren lassen. Dies ist eine veraltete Syntax zur Wahrung der Webkompatibilität, auf die Sie sich nicht verlassen sollten.
Im nicht Unicode-bewussten Modus werden Escape-Sequenzen innerhalb von Zeichenklassen der Form \cX, bei denen X eine Ziffer oder _ ist, genauso dekodiert wie solche mit ASCII-Buchstaben: Nach der Berechnung modulo 32 ist \c0 dasselbe wie \cP. Wenn die Form \cX an einer beliebigen Stelle vorkommt und X keines der erkannten Zeichen ist, wird der umgekehrte Schrägstrich außerdem als wörtliches Zeichen behandelt. Auch diese Syntaxformen sind veraltet.
/[\c0]/.test("\x10"); // true
/[\c_]/.test("\x1f"); // true
/[\c*]/.test("\\"); // true
/\c/.test("\\c"); // true
/\c0/.test("\\c0"); // true (the \c0 syntax is only supported in character classes)
Beispiele
>Zeichen-Escape-Sequenzen verwenden
Zeichen-Escape-Sequenzen sind nützlich, wenn Sie ein Zeichen abgleichen möchten, das sich nicht ohne Weiteres in seiner wörtlichen Form darstellen lässt. Beispielsweise können Sie in einem regulären Ausdrucksliteral keinen wörtlichen Zeilenumbruch verwenden und müssen daher eine Zeichen-Escape-Sequenz verwenden:
const pattern = /a\nb/;
const string = `a
b`;
console.log(pattern.test(string)); // true
Spezifikationen
| Spezifikation |
|---|
| ECMAScript® 2027 Language Specification> # prod-CharacterEscape> |