Start · Sprachen · JavaScript · Referenz · Wörtliches Zeichen: a, b

Wörtliches Zeichen: a, b

Keyword

Ein wörtliches Zeichen in einem regulären Ausdruck passt genau auf sich selbst im Eingabetext, z. B. passt <code>/a/</code> auf jedes „a“.

seit JavaScript ES1 (Baseline: alle Browser) Kategorie: syntax

Signatur

/a/, /abc/, /\./ — Wörtliches Zeichen (Literal character) in regulären Ausdrücken

Beschreibung

Ein wörtliches Zeichen ist der einfachste Baustein eines regulären Ausdrucks: Es steht für genau sich selbst. Das Muster /a/ findet das Zeichen „a“, /abc/ findet die Zeichenfolge „abc“ genau in dieser Reihenfolge. Jedes Zeichen, das in der Regex-Syntax keine Sonderbedeutung hat, wird wörtlich interpretiert. Dazu gehören Buchstaben, Ziffern und die meisten Satzzeichen.

Die folgenden Syntaxzeichen haben eine Sonderbedeutung und müssen mit einem Backslash maskiert werden, wenn sie wörtlich gemeint sind: ^ $ \ . * + ? ( ) [ ] { } |. Außerdem gilt: / muss in einem Regex-Literal maskiert werden (\/). In einem mit new RegExp() erzeugten Ausdruck ist das nicht nötig. Beispiel: /\./ passt auf einen echten Punkt, /./ dagegen auf ein beliebiges Zeichen.

Wörtliche Zeichen werden standardmäßig mit Beachtung der Groß-/Kleinschreibung verglichen. Mit dem Flag i passt /a/i sowohl auf „a“ als auch auf „A“. Mit dem Flag u oder v werden Zeichen außerhalb der BMP, z. B. Emojis, als ein einzelnes Zeichen behandelt und nicht als zwei Ersatzzeichen (Surrogates).

Wörtliche Zeichen verwendet man immer dann, wenn ein fester Textbestandteil gesucht wird: Präfixe, Trennzeichen, Dateiendungen oder Schlüsselwörter. In Kombination mit Quantoren, Zeichenklassen und Gruppen bilden sie das Grundgerüst fast jedes Musters.

Parameter

Name Typ Default Beschreibung
$zeichen Pflicht string (einzelnes Zeichen) Beliebiges Zeichen ohne Sonderbedeutung, z. B. a, 7, - (außerhalb von Zeichenklassen). Syntaxzeichen müssen mit \ maskiert werden.

Rückgabewert

Typ
—
Beschreibung
Ein Syntaxelement, kein Funktionsaufruf. Es passt auf genau ein Vorkommen des angegebenen Zeichens im Eingabetext.

Beispiele

Einfache wörtliche Suche

const text = 'Banane';
console.log(/a/.test(text));
console.log(text.match(/an/g));
console.log(/A/.test(text));
console.log(/A/i.test(text));
true [ 'an', 'an' ] false true

Syntaxzeichen maskieren: Dateiendung prüfen

const istPdf = (datei) => /\.pdf$/i.test(datei);

console.log(istPdf('bericht.PDF'));
console.log(istPdf('berichtxpdf')); // ohne \. würde das passen
console.log('3+4=7'.replace(/\+/g, ' plus '));
true false 3 plus 4=7

Benutzereingabe sicher als wörtlichen Text verwenden

// Alle Sonderzeichen maskieren, damit die Eingabe wörtlich gesucht wird
const escapeRegExp = (s) => s.replace(/[.*+?^${}()|[\]\\\/]/g, '\\$&');

const suchbegriff = 'c++ (v2.0)';
const re = new RegExp(escapeRegExp(suchbegriff), 'gi');
console.log('Neu: C++ (v2.0) ist da!'.replace(re, '<mark>$&</mark>'));
Neu: <mark>C++ (v2.0)</mark> ist da!

Emojis mit dem u-Flag als ein Zeichen behandeln

console.log(/^😀$/.test('😀'));
console.log(/^.$/.test('😀'));
console.log(/^.$/u.test('😀'));
true false true

// Wichtig · Fallstricke

  • Häufigster Fehler: Man vergisst, ein Syntaxzeichen zu maskieren. /1.5/ passt auch auf „1x5“, richtig ist /1\.5/.
  • In new RegExp('...')-Zeichenketten braucht der Backslash eine doppelte Maskierung: new RegExp('\\.') entspricht /\./.
  • Innerhalb von Zeichenklassen [...] gelten andere Regeln: Dort sind z. B. . und * wörtlich, während ], \, ^ (am Anfang) und - (zwischen zwei Zeichen) eine Sonderbedeutung haben. Beim v-Flag sind weitere Zeichen reserviert.
  • Mit den Flags u und v sind unnötige Maskierungen wie \a oder \- außerhalb von Klassen ein SyntaxError. Ohne diese Flags werden sie stillschweigend als wörtliches Zeichen gewertet.
  • Ungeprüfte Benutzereingaben sollte man nie direkt in new RegExp() einsetzen, sonst drohen falsche Treffer oder ReDoS. Maskieren Sie die Eingabe vorher. RegExp.escape() ist erst in neueren Engines verfügbar (ES2025).
  • Bei reinen Textsuchen ohne Muster sind String.prototype.includes() oder indexOf() einfacher und schneller.