Wörtliches Zeichen: a, b
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.
Ein wörtliches Zeichen spezifiziert exakt sich selbst, das im Eingabetext abgeglichen werden soll.
Syntax
c
Parameter
c-
Ein einzelnes Zeichen, das keines der unten beschriebenen Syntaxzeichen ist.
Beschreibung
In regulären Ausdrücken können die meisten Zeichen wörtlich erscheinen. Sie bilden in der Regel die grundlegendsten Bausteine der Muster. Zum Beispiel wird hier ein Muster aus dem Beispiel Entfernen von HTML-Tags gezeigt:
const pattern = /<.+?>/g;
In diesem Beispiel werden ., + und ? als Syntaxzeichen bezeichnet. Sie haben spezielle Bedeutungen in regulären Ausdrücken. Die restlichen Zeichen im Muster (< und >) sind wörtliche Zeichen. Sie stimmen mit sich selbst im Eingabetext überein: die linke und rechte spitze Klammer.
Die folgenden Zeichen sind Syntaxzeichen in regulären Ausdrücken und können nicht als wörtliche Zeichen erscheinen:
Innerhalb von Zeichenklassen können weitere Zeichen wörtlich erscheinen. Für weitere Informationen siehe die Seite Zeichenklassen. Zum Beispiel stimmen \. und [.] beide mit einem wörtlichen . überein. In v-Modus Zeichenklassen jedoch, gibt es eine andere Menge von Zeichen, die als Syntaxzeichen reserviert sind. Um möglichst umfassend zu sein, unten ist eine Tabelle der ASCII-Zeichen und ob sie in verschiedenen Kontexten mit oder ohne Escape-Zeichen erscheinen können, wobei "✅" bedeutet, dass das Zeichen sich selbst repräsentiert, "❌" bedeutet, dass es einen Syntaxfehler verursacht, und "⚠️" bedeutet, dass das Zeichen gültig ist, aber etwas anderes als sich selbst bedeutet.
| Zeichen | Außerhalb von Zeichenklassen im u- oder v-Modus |
In u-Modus Zeichenklassen |
In v-Modus Zeichenklassen |
|||
|---|---|---|---|---|---|---|
| Unescaped | Escaped | Unescaped | Escaped | Unescaped | Escaped | |
123456789 "' |
✅ | ❌ | ✅ | ❌ | ✅ | ❌ |
!#%&,:;<=>@`~ |
✅ | ❌ | ✅ | ❌ | ✅ | ✅ |
] |
❌ | ✅ | ❌ | ✅ | ❌ | ✅ |
()[{} |
❌ | ✅ | ✅ | ✅ | ❌ | ✅ |
*+? |
❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
/ |
✅ | ✅ | ✅ | ✅ | ❌ | ✅ |
0DSWbdfnrstvw |
✅ | ⚠️ | ✅ | ⚠️ | ✅ | ⚠️ |
B |
✅ | ⚠️ | ✅ | ❌ | ✅ | ❌ |
$. |
⚠️ | ✅ | ✅ | ✅ | ✅ | ✅ |
| |
⚠️ | ✅ | ✅ | ✅ | ❌ | ✅ |
- |
✅ | ❌ | ✅⚠️ | ✅ | ❌⚠️ | ✅ |
^ |
⚠️ | ✅ | ✅⚠️ | ✅ | ✅⚠️ | ✅ |
\ |
❌⚠️ | ✅ | ❌⚠️ | ✅ | ❌⚠️ | ✅ |
Hinweis:
Die Zeichen, die sowohl escaped als auch unescaped in v-Modus Zeichenklassen erscheinen können, sind genau diejenigen, die als "Doppelpunktionen" verboten sind. Sehen Sie sich v-Modus Zeichenklassen für weitere Informationen an.
Wann immer Sie ein Syntaxzeichen wörtlich abgleichen möchten, müssen Sie es mit einem Backslash (\) escapen. Um zum Beispiel ein wörtliches * in einem Muster zu finden, müssen Sie im Muster \* schreiben. Die Verwendung von Syntaxzeichen als wörtliche Zeichen führt entweder zu unerwarteten Ergebnissen oder verursacht Syntaxfehler. Zum Beispiel ist /*/ kein gültiger regulärer Ausdruck, weil der Quantor nicht von einem Muster gefolgt wird. Im Unicode-unabhängigen Modus können ], { und } wörtlich erscheinen, wenn es nicht möglich ist, sie als das Ende einer Zeichenklasse oder als Quantor-Begrenzer zu interpretieren. Dies ist eine abgekündigte Syntax für Webkompatibilität und sollte nicht verwendet werden.
Reguläre Ausdrucksliterale können nicht mit bestimmten nicht-Syntax wörtlichen Zeichen angegeben werden. / kann nicht als wörtliches Zeichen in einem regulären Ausdrucksliteral erscheinen, weil / als Begrenzer des Literals selbst verwendet wird. Sie müssen es als \/ escapen, wenn Sie ein wörtliches / abgleichen möchten. Zeilenabschlüsse können auch nicht als wörtliche Zeichen in einem regulären Ausdrucksliteral vorkommen, weil ein Literal nicht mehrere Zeilen umfassen kann. Sie müssen eine Zeichen escape wie \n verwenden. Es gibt keine solchen Einschränkungen bei der Verwendung des RegExp() Konstruktors, obwohl Zeichenkettenliterale ihre eigenen Escape-Regeln haben (zum Beispiel bedeutet "\\" tatsächlich ein einzelnes Backslash-Zeichen, so dass new RegExp("\\*") und /\*/ äquivalent sind).
Im Unicode-unabhängigen Modus wird das Muster als eine Sequenz von UTF-16 Codeeinheiten interpretiert. Das bedeutet, dass Surrogatpaare tatsächlich zwei wörtliche Zeichen repräsentieren. Dies kann zu unerwarteten Verhaltensweisen führen, wenn es mit anderen Merkmalen kombiniert wird:
/^[😄]$/.test("😄"); // false, because the pattern is interpreted as /^[\ud83d\udc04]$/
/^😄+$/.test("😄😄"); // false, because the pattern is interpreted as /^\ud83d\udc04+$/
Im Unicode-bewussten Modus wird das Muster als eine Sequenz von Unicode-Codepunkten interpretiert, und Surrogatpaare werden nicht getrennt. Deshalb sollten Sie immer bevorzugt das u-Flag verwenden.
Beispiele
>Verwendung von wörtlichen Zeichen
Das folgende Beispiel ist aus Zeichen escape kopiert. Die Zeichen a und b sind wörtliche Zeichen im Muster, und \n ist ein escaped Zeichen, da es nicht wörtlich in einem regulären Ausdrucksliteral erscheinen kann.
const pattern = /a\nb/;
const string = `a
b`;
console.log(pattern.test(string)); // true
Spezifikationen
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # prod-PatternCharacter> |