Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
Zeichenescape: \n, \u{...}
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juli 2015.
EinZeichenescape repräsentiert ein Zeichen, das möglicherweise nicht bequem in seiner wörtlichen Form dargestellt werden kann.
In diesem Artikel
Syntax
\f, \n, \r, \t, \v\cA, \cB, …, \cz\0\^, \$, \\, \., \*, \+, \?, \(, \), \[, \], \{, \}, \|, \/\xHH\uHHHH\u{HHH}Hinweis:, ist nicht Teil der Syntax.
Parameter
HHHEine hexadezimale Zahl, die den Unicode-Codepunkt des Zeichens darstellt. Die Form
\xHHmuss zwei hexadezimale Ziffern haben; die Form\uHHHHmuss vier haben; die Form\u{HHH}kann 1 bis 6 hexadezimale Ziffern haben.
Beschreibung
Die folgenden Zeichenescapes werden in regulären Ausdrücken erkannt:
\f,\n,\r,\t,\vEntsprechen denen inZeichenkettenliteralen, außer
\b, das in RegExen eineWortgrenze darstellt, es sei denn, es befindet sich in einerZeichenklasse.\cgefolgt von einem Buchstaben vonAbisZoderabiszRepräsentiert das Steuerzeichen mit einem Wert, der dem Zeichenwert des Buchstabens modulo 32 entspricht. Zum Beispiel repräsentiert
\cJeinen Zeilenumbruch (\n), da der Codepunkt vonJ74 ist und 74 modulo 32 ist 10, was dem Codepunkt des Zeilenumbruchs entspricht. Da sich Großbuchstaben und ihre Kleinbuchstabenform um 32 unterscheiden, sind\cJund\cjgleichwertig. Sie können Steuerzeichen von 1 bis 26 in dieser Form darstellen.\0Repräsentiert das U+0000 NUL Zeichen. Kann nicht von einer Ziffer gefolgt werden (was es zu einerveralteten oktalen Escape Sequenz macht).
\^,\$,\\,\.\*,\+,\?,\(,\),\[,\],\{,\},\|,\/Repräsentiert das Zeichen selbst. Zum Beispiel repräsentiert
\\einen Backslash und\(eine linke Klammer. Diese sindSyntaxzeichen in RegExen (/ist der Begrenzer eines RegEx-Literals), sodass sie ein Escaping erfordern, es sei denn, sie befinden sich in einerZeichenklasse.\xHHRepräsentiert das Zeichen mit dem angegebenen hexadezimalen Unicode-Codepunkt. Die hexadezimale Zahl muss genau zwei Ziffern lang sein.
\uHHHHRepräsentiert das Zeichen mit dem angegebenen hexadezimalen Unicode-Codepunkt. Die hexadezimale Zahl muss genau vier Ziffern lang sein. Zwei solche Escape-Sequenzen können verwendet werden, um ein Surrogatpaar imUnicode-bewussten Modus darzustellen. (Im Unicode-unbewussten Modus sind sie immer zwei separate Zeichen.)
\u{HHH}(nur imUnicode-bewussten Modus) Repräsentiert das Zeichen mit dem angegebenen hexadezimalen Unicode-Codepunkt. Die hexadezimale Zahl kann 1 bis 6 Ziffern lang sein.
ImUnicode-unbewussten Modus werden Escape-Sequenzen, die nicht zu den obigen gehören, zuIdentitäts-Escapes: Sie repräsentieren das Zeichen, das dem Backslash folgt. Zum Beispiel repräsentiert\a das Zeichena. Dieses Verhalten begrenzt die Fähigkeit, neue Escape-Sequenzen einzuführen, ohne Kompatibilitätsprobleme zu verursachen, und ist daher im Unicode-bewussten Modus verboten.
Im Unicode-unbewussten Modus dürfen],{ und}wörtlich erscheinen, wenn es nicht möglich ist, sie als Ende einer Zeichenklasse oder als Begrenzer für Quantifizierer zu parsen. Dies ist eineveraltete Syntax für die Webkompatibilität und sollte nicht verwendet werden.
Im Unicode-unbewussten Modus werden Escape-Sequenzen innerhalb vonZeichenklassen der Form\cX, wobeiX eine Zahl oder_ ist, auf die gleiche Weise dekodiert wie solche mitASCII-Buchstaben:\c0 ist dasselbe wie\cP im Modulo 32. Darüber hinaus wird, wenn die Form\cX irgendwo auftritt, wobeiX nicht eines der anerkannten Zeichen ist, der Backslash als wörtliches Zeichen behandelt. Diese Syntaxen sind ebenfalls 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
>Verwendung von Zeichenescapes
Zeichenescapes sind nützlich, wenn Sie ein Zeichen abgleichen möchten, das nicht leicht in seiner wörtlichen Form dargestellt werden kann. Beispielsweise können Sie einen Zeilenumbruch nicht wörtlich in einem RegEx-Literal verwenden, daher müssen Sie ein Zeichenescape verwenden:
const pattern = /a\nb/;const string = `ab`;console.log(pattern.test(string)); // trueSpezifikationen
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # prod-CharacterEscape> |