Disjunktion: |
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. Wenn eine Alternative mit der Eingabe übereinstimmt, wird die gesamte Disjunktion als übereinstimmend betrachtet.
Syntax
alternative1|alternative2
alternative1|alternative2|alternative3|…
Parameter
alternativeN
-
Eine alternative Vorlage, bestehend aus einer Sequenz von Atomen und Assertions. Das erfolgreiche Übereinstimmen einer Alternative führt dazu, dass die gesamte Disjunktion übereinstimmt.
Beschreibung
Der reguläre Ausdrucksoperator |
trennt zwei oder mehr Alternativen. Das Muster versucht zuerst, die erste Alternative zu erkennen; wenn dies fehlschlägt, versucht es, die zweite zu erkennen, und so weiter. Zum Beispiel wird im folgenden Beispiel "a"
anstelle von "ab"
übereinstimmen, da die erste Alternative bereits erfolgreich übereinstimmt:
/a|ab/.exec("abc"); // ['a']
Der |
Operator hat die niedrigste Priorität in einem regulären Ausdruck. Wenn Sie eine Disjunktion als Teil eines größeren Musters verwenden möchten, müssen Sie diese gruppieren.
Wenn eine gruppierte Disjunktion weitere Ausdrücke danach hat, beginnt das Matching, indem die erste Alternative ausgewählt und versucht wird, den Rest des regulären Ausdrucks zu erfassen. Wenn der Rest des regulären Ausdrucks nicht übereinstimmt, versucht der Matcher stattdessen die nächste Alternative. Zum Beispiel,
/(?:(a)|(ab))(?:(c)|(bc))/.exec("abc"); // ['abc', 'a', undefined, undefined, 'bc']
// Not ['abc', undefined, 'ab', 'c', undefined]
Dies liegt daran, dass durch das Auswählen von a
in der ersten Alternative es möglich ist, bc
in der zweiten Alternative auszuwählen und ein erfolgreiches Matching zu erzielen. Dieser Prozess wird Backtracking genannt, da der Matcher zuerst über die Disjunktion hinausgeht und dann darauf zurückkommt, wenn das anschließende Matching fehlschlägt.
Beachten Sie auch, dass alle erfassenden Klammern innerhalb einer Alternative, die nicht übereinstimmt, undefined
im resultierenden Array erzeugen.
Eine Alternative kann leer sein, in diesem Fall entspricht sie dem leeren String (in anderen Worten, sie stimmt immer überein).
Alternativen werden immer von links nach rechts versucht, unabhängig von der Richtung der Übereinstimmung (was bei einem Lookbehind umgekehrt ist).
Beispiele
Dateierweiterungen abgleichen
Das folgende Beispiel stimmt mit Dateierweiterungen überein und verwendet denselben Code wie im Artikel zur Eingabegrenzen-Assertion:
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 Language Specification # prod-Disjunction |
Browser-Kompatibilität
BCD tables only load in the browser