Disjunction: |

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.

Eine Disjunktion spezifiziert mehrere Alternativen. Jede Alternative, die mit der Eingabe übereinstimmt, führt dazu, dass die gesamte Disjunktion übereinstimmt.

Syntax

regex
alternative1|alternative2
alternative1|alternative2|alternative3|…

Parameter

alternativeN

Ein alternatives Muster, bestehend aus einer Sequenz von Atomen und Assertions. Das erfolgreiche Übereinstimmen einer Alternative führt dazu, dass die gesamte Disjunktion übereinstimmt.

Beschreibung

Der | Operator im regulären Ausdruck trennt zwei oder mehr Alternativen. Das Muster versucht zuerst, mit der ersten Alternative zu übereinstimmen; falls es fehlschlägt, versucht es, mit der zweiten Alternative zu übereinstimmen und so weiter. Zum Beispiel passt das folgende Beispiel "a" statt "ab", weil die erste Alternative bereits erfolgreich übereinstimmt:

js
/a|ab/.exec("abc"); // ['a']

Der | Operator hat die niedrigste Priorität in einem regulären Ausdruck. Möchten Sie eine Disjunktion als Teil eines größeren Musters verwenden, müssen Sie sie gruppieren.

Wenn eine gruppierte Disjunktion mehr Ausdrücke danach hat, beginnt die Übereinstimmung, indem die erste Alternative ausgewählt und versucht wird, den Rest des regulären Ausdrucks zu matchen. Wenn der Rest des regulären Ausdrucks nicht übereinstimmt, versucht der Matcher stattdessen die nächste Alternative. Beispielsweise:

js
/(?:(a)|(ab))(?:(c)|(bc))/.exec("abc"); // ['abc', 'a', undefined, undefined, 'bc']
// Not ['abc', undefined, 'ab', 'c', undefined]

Dies ist, weil durch die Auswahl von a in der ersten Alternative die Möglichkeit besteht, bc in der zweiten Alternative auszuwählen und eine erfolgreiche Übereinstimmung zu erzielen. Dieser Prozess wird Backtracking genannt, weil der Matcher zuerst über die Disjunktion hinausgeht und dann zurückkommt, wenn das nachfolgende Matching fehlschlägt.

Beachten Sie auch, dass Klammern innerhalb einer Alternative, die nicht gematcht wird, undefined im resultierenden Array produzieren.

Eine Alternative kann leer sein; in diesem Fall entspricht sie der leeren Zeichenkette (mit anderen Worten, sie passt immer).

Alternativen werden immer von links nach rechts versucht, unabhängig von der Matching-Richtung (die in einer Lookbehind umgekehrt ist).

Beispiele

Übereinstimmung von Dateierweiterungen

Im folgenden Beispiel werden Dateierweiterungen mit dem gleichen Code gematcht wie im Artikel über die Eingangsgrenzwert-Assertion:

js
function isImage(filename) {
  return /\.(?:png|jpe?g|webp|avif|gif)$/i.test(filename);
}

isImage("image.png"); // true
isImage("image.jpg"); // true
isImage("image.pdf"); // false

Spezifikationen

Specification
ECMAScript® 2026 Language Specification
# prod-Disjunction

Browser-Kompatibilität

Siehe auch