Zeichen-Escape: \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 Zeichen-Escape stellt ein Zeichen dar, 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 kein Bestandteil 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 Zeichen-Escapes werden in regulären Ausdrücken erkannt:
\f
,\n
,\r
,\t
,\v
-
Genauso wie in Zeichenkettenliteralen, mit Ausnahme von
\b
, das in Regexes 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 Buchstabenmodulo 32 entspricht. Zum Beispiel steht
\cJ
für Zeilenumbruch (\n
), da der Code-Punkt vonJ
74 ist und 74 modulo 32 ist 10, was dem Code-Punkt von Zeilenumbruch entspricht. Da sich ein Großbuchstabe und seine Kleinbuchstabenform um 32 unterscheiden, sind\cJ
und\cj
äquivalent. 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 einem veralteten Oktal-Escape-Sequenz macht).
\^
,\$
,\\
,\.
\*
,\+
,\?
,\(
,\)
,\[
,\]
,\{
,\}
,\|
,\/
-
Repräsentieren das Zeichen selbst. Zum Beispiel steht
\\
für einen Rückwärtsschrägstrich, und\(
steht für eine linke Klammer. Diese sind Syntaxzeichen in Regexes (/
ist der Delimitator eines Regex-Literals), daher erfordern sie ein Escape, es sei denn, sie sind 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 solcher Escape-Sequenzen können verwendet werden, um ein Surrogatpaar im Unicode-fähigen Modus darzustellen. (Im Unicode-unfähigen Modus sind sie immer zwei getrennte Zeichen.)
\u{HHH}
-
(Nur im Unicode-fähigen Modus) Repräsentiert das Zeichen mit dem angegebenen hexadezimalen Unicode-Codepunkt. Die hexadezimale Zahl kann 1 bis 6 Stellen lang sein.
Im Unicode-unfähigen Modus werden Escape-Sequenzen, die nicht zu den oben genannten gehören, zu Identitäts-Escapes: Sie repräsentieren das Zeichen, das dem Rückwärtsschrägstrich folgt. Zum Beispiel repräsentiert \a
das Zeichen a
. Dieses Verhalten schränkt die Möglichkeit ein, neue Escape-Sequenzen einzuführen, ohne Kompatibilitätsprobleme rückwärts zu erzeugen, und ist daher im Unicode-fähigen Modus verboten.
Im Unicode-unfähigen Modus können ]
, {
und }
wörtlich erscheinen, wenn es nicht möglich ist, sie als Ende einer Zeichenklasse oder Quantifizierungsbegrenzung zu interpretieren. Dies ist eine veraltete Syntax für Webkompatibilität, und man sollte sich nicht darauf verlassen.
Im Unicode-unfähigen Modus werden Escape-Sequenzen innerhalb von Zeichenklassen in der Form \cX
, wobei X
eine Zahl oder _
ist, auf die gleiche Weise dekodiert wie bei ASCII-Buchstaben: \c0
ist das gleiche wie \cP
, wenn man modulo 32 nimmt. Zusätzlich wird, wenn die Form \cX
überall dort angetroffen wird, wo X
nicht einer der anerkannten Zeichen ist, der Rückwärtsschrägstrich 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
Verwenden von Zeichen-Escapes
Zeichen-Escapes sind nützlich, wenn Sie ein Zeichen abgleichen möchten, das nicht leicht in seiner wörtlichen Form dargestellt werden kann. Zum Beispiel können Sie einen Zeilenumbruch nicht wörtlich in einem Regex-Literal verwenden, deshalb müssen Sie einen Zeichen-Escape verwenden:
const pattern = /a\nb/;
const string = `a
b`;
console.log(pattern.test(string)); // true
Spezifikationen
Specification |
---|
ECMAScript® 2026 Language Specification # prod-CharacterEscape |