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 July 2015.
Ein Zeichenescape repräsentiert ein Zeichen, das möglicherweise nicht bequem in seiner wörtlichen Form dargestellt werden kann.
Syntax
\f, \n, \r, \t, \v
\cA, \cB, …, \cz
\0
\^, \$, \\, \., \*, \+, \?, \(, \), \[, \], \{, \}, \|, \/
\xHH
\uHHHH
\u{HHH}
Hinweis:
,
ist nicht Teil der Syntax.
Parameter
HHH
-
Eine hexadezimale Zahl, die den Unicode-Codepunkt des Zeichens darstellt. Die Form
\xHH
muss zwei hexadezimale Ziffern haben; die Form\uHHHH
muss 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
,\v
-
Entsprechen denen in Zeichenkettenliteralen, außer
\b
, das in RegExen eine Wortgrenze darstellt, es sei denn, es befindet sich in einer Zeichenklasse. \c
gefolgt von einem Buchstaben vonA
bisZ
odera
bisz
-
Repräsentiert das Steuerzeichen mit einem Wert, der dem Zeichenwert des Buchstabens modulo 32 entspricht. Zum Beispiel repräsentiert
\cJ
einen Zeilenumbruch (\n
), da der Codepunkt vonJ
74 ist und 74 modulo 32 ist 10, was dem Codepunkt des Zeilenumbruchs entspricht. Da sich Großbuchstaben und ihre Kleinbuchstabenform um 32 unterscheiden, sind\cJ
und\cj
gleichwertig. Sie können Steuerzeichen von 1 bis 26 in dieser Form darstellen. \0
-
Repräsentiert das U+0000 NUL Zeichen. Kann nicht von einer Ziffer gefolgt werden (was es zu einer veralteten oktalen Escape Sequenz macht).
\^
,\$
,\\
,\.
\*
,\+
,\?
,\(
,\)
,\[
,\]
,\{
,\}
,\|
,\/
-
Repräsentiert das Zeichen selbst. Zum Beispiel repräsentiert
\\
einen Backslash und\(
eine linke Klammer. Diese sind Syntaxzeichen in RegExen (/
ist der Begrenzer eines RegEx-Literals), sodass sie ein Escaping erfordern, es sei denn, sie befinden sich in einer Zeichenklasse. \xHH
-
Repräsentiert das Zeichen mit dem angegebenen hexadezimalen Unicode-Codepunkt. Die hexadezimale Zahl muss genau zwei Ziffern lang sein.
\uHHHH
-
Reprä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 im Unicode-bewussten Modus darzustellen. (Im Unicode-unbewussten Modus sind sie immer zwei separate Zeichen.)
\u{HHH}
-
(nur im Unicode-bewussten Modus) Repräsentiert das Zeichen mit dem angegebenen hexadezimalen Unicode-Codepunkt. Die hexadezimale Zahl kann 1 bis 6 Ziffern lang sein.
Im Unicode-unbewussten Modus werden Escape-Sequenzen, die nicht zu den obigen gehören, zu Identitäts-Escapes: Sie repräsentieren das Zeichen, das dem Backslash folgt. Zum Beispiel repräsentiert \a
das Zeichen a
. 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 eine veraltete Syntax für die Webkompatibilität und sollte nicht verwendet werden.
Im Unicode-unbewussten Modus werden Escape-Sequenzen innerhalb von Zeichenklassen der Form \cX
, wobei X
eine Zahl oder _
ist, auf die gleiche Weise dekodiert wie solche mit ASCII-Buchstaben: \c0
ist dasselbe wie \cP
im Modulo 32. Darüber hinaus wird, wenn die Form \cX
irgendwo auftritt, wobei X
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 = `a
b`;
console.log(pattern.test(string)); // true
Spezifikationen
Specification |
---|
ECMAScript® 2026 Language Specification # prod-CharacterEscape |