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 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}
Note:
,
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 Zeichen-Escapes werden in regulären Ausdrücken erkannt:
\f
,\n
,\r
,\t
,\v
-
Entsprechen denselben wie in Zeichenfolgenliteralen, außer
\b
, das in regulären Ausdrücken 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
den Zeilenumbruch (\n
), da der Codepunkt vonJ
74 ist und 74 modulo 32 ist 10, was der Codepunkt des Zeilenumbruchs ist. Da ein Großbuchstabe und seine Kleinschreibform sich 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. Darf nicht von einer Ziffer gefolgt werden (was es zu einer veralteten oktalen Escape- Sequenz macht).
\^
,\$
,\\
,\.
\*
,\+
,\?
,\(
,\)
,\[
,\]
,\{
,\}
,\|
,\/
-
Repräsentiert das Zeichen selbst. Zum Beispiel stellt
\\
einen Backslash dar, und\(
stellt eine linke Klammer dar. Diese sind Syntaxzeichen in regulären Ausdrücken (/
ist der Begrenzer eines Regex-Literals), daher müssen sie maskiert werden, es sei denn, sie befinden sich in einer Zeichenklasse. \xHH
-
Repräsentiert das Zeichen mit dem gegebenen hexadezimalen Unicode-Codepunkt. Die hexadezimale Zahl muss genau zwei Ziffern lang sein.
\uHHHH
-
Repräsentiert das Zeichen mit dem gegebenen 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-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 gegebenen hexadezimalen Unicode-Codepunkt. Die hexadezimale Zahl kann 1 bis 6 Ziffern lang sein.
Im Unicode-unbewussten Modus werden Escape-Sequenzen, die nicht zu den oben genannten 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 beschränkt die Möglichkeit, neue Escape-Sequenzen einzuführen, ohne Kompatibilitätsprobleme zu verursachen, und ist daher im Unicode-bewussten Modus verboten.
Im Unicode-unbewussten Modus können ]
, {
und }
wörtlich erscheinen, wenn es nicht möglich ist, sie als das Ende einer Zeichenklasse oder Quantifizierer-Begrenzer zu parsen. Dies ist eine veraltete Syntax für Web-Kompatibilität, und Sie sollten sich nicht darauf verlassen.
Im Unicode-unbewussten Modus werden Escape-Sequenzen innerhalb von Zeichenklassen der Form \cX
, wobei X
eine Zahl oder _
ist, auf die gleiche Weise decodiert wie solche mit ASCII-Buchstaben: \c0
ist dasselbe wie \cP
, wenn man es modulo 32 nimmt. Zusätzlich, wenn die Form \cX
überall begegnet wird, wo X
nicht eines der anerkannten Zeichen ist, dann wird 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 Zeichen-Escapes
Zeichen-Escapes sind nützlich, wenn Sie ein Zeichen abgleichen möchten, das nicht einfach in seiner wörtlichen Form dargestellt werden kann. Zum Beispiel können Sie einen Zeilenumbruch nicht wörtlich in einem Regex-Literal verwenden, daher müssen Sie ein Zeichen-Escape verwenden:
const pattern = /a\nb/;
const string = `a
b`;
console.log(pattern.test(string)); // true
Spezifikationen
Specification |
---|
ECMAScript Language Specification # prod-CharacterEscape |
Browser-Kompatibilität
BCD tables only load in the browser