[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Guide/Regular_expressions/Quantifiers [Back]  [Original]

Quantifiers - JavaScript | MDN

Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.

View in English Always switch to English

Quantifiers

Quantifizierer geben die Anzahl der Zeichen oder Ausdrcke an, die bereinstimmen sollen.

In diesem Artikel

Probieren Sie es aus

const ghostSpeak = "booh boooooooh";
const regexpSpooky = /bo{3,}h/;
console.log(ghostSpeak.match(regexpSpooky));
// Expected output: Array ["boooooooh"]

const modifiedQuote = "[He] ha[s] to go read this novel [Alice in Wonderland].";
const regexpModifications = /\[.*?\]/g;
console.log(modifiedQuote.match(regexpModifications));
// Expected output: Array ["[He]", "[s]", "[Alice in Wonderland]"]

const regexpTooGreedy = /\[.*\]/g;
console.log(modifiedQuote.match(regexpTooGreedy));
// Expected output: Array ["[He] ha[s] to go read this novel [Alice in Wonderland]"]

Typen

Hinweis: Im Folgenden bezieht sich item nicht nur auf einzelne Zeichen, sondern schliet auch Zeichenklassen sowie Gruppen und Rckverweise ein.

Zeichen Bedeutung
x*

Passt zum vorhergehenden Element "x" 0 oder mehr Mal. Zum Beispiel, /bo*/ passt zu "boooo" in "Ein Geist booooed" und "b" in "Ein Vogel zwitscherte", aber zu nichts in "Eine Ziege grunzte".

x+

Passt zum vorhergehenden Element "x" 1 oder mehr Mal. Entspricht {1,}. Zum Beispiel, /a+/ passt zum "a" in "Candy" und zu allen "a"s in "Caaaaaaandy".

x?

Passt zum vorhergehenden Element "x" 0 oder 1 Mal. Zum Beispiel, /e?le?/ passt zum "el" in "angel" und zum "le" in "angle."

Wenn direkt nach einem der Quantifizierer *, +, ? oder {} verwendet wird, macht es den Quantifizierer nicht-gierig (passend zur minimalen Anzahl), im Gegensatz zum Standardverhalten, das gierig ist (passend zur maximalen Anzahl).

x{n}

Wo "n" eine nicht-negative Ganzzahl ist, passt genau "n" Vorkommen des vorhergehenden Elements "x". Zum Beispiel, /a{2}/ passt nicht zum "a" in "Candy", aber es passt zu allen "a"s in "Caandy" und den ersten beiden "a"s in "Caaandy".

x{n,}

Wo "n" eine nicht-negative Ganzzahl ist, passt zu mindestens "n" Vorkommen des vorhergehenden Elements "x". Zum Beispiel, /a{2,}/ passt nicht zum "a" in "Candy", aber passt zu allen "a"s in "Caandy" und in "Caaaaaaandy".

x{n,m}

Wo "n" und "m" nicht-negative Ganzzahlen sind und m >= n, passt zu mindestens "n" und hchstens "m" Vorkommen des vorhergehenden Elements "x". Zum Beispiel, /a{1,3}/ passt zu nichts in "Cndy", zum "a" in "Candy", zu den beiden "a"s in "Caandy" und zu den ersten drei "a"s in "Caaaaaaandy". Beachten Sie, dass beim Abgleichen von "Caaaaaaandy", das Match "aaa" ist, obwohl die ursprngliche Zeichenkette mehr "a"s enthielt.

x*?
x+?
x??
x{n}?
x{n,}?
x{n,m}?

Standardmig sind Quantifizierer wie * und + "gierig", was bedeutet, dass sie versuchen, so oft wie mglich zu passen. Das ?-Zeichen nach dem Quantifizierer macht den Quantifizierer "nicht-gierig": das bedeutet, dass er aufhrt, sobald er die minimale Anzahl von bereinstimmungen gefunden hat. Zum Beispiel, gegeben einer Zeichenkette wie "some <foo> <bar> new </bar> </foo> thing":

  • /<.*>/ wird "<foo> <bar> new </bar> </foo>" abgleichen
  • /<.*?>/ wird "<foo>" abgleichen

Hinweis: Das Hinzufgen von ? nach {n} ist syntaktisch gltig, aber praktisch nutzlos. Da {n} immer genau n Mal passt, verhlt sich x{n}? wie x{n}.

Beispiele

Wiederholtes Muster

In diesem Beispiel passen wir ein oder mehrere Wortzeichen mit \w+, dann ein oder mehrere Zeichen "a" mit a+, und enden schlielich an einer Wortgrenze mit \b.

js
const wordEndingWithAs = /\w+a+\b/;
const delicateMessage = "This is Spartaaaaaaa";

console.table(delicateMessage.match(wordEndingWithAs)); // [ "Spartaaaaaaa" ]

Zeichen zhlen

In diesem Beispiel passen wir Wrter, die einen einzigen Buchstaben haben, Wrter, die zwischen 2 und 6 Buchstaben haben, und Wrter, die 13 oder mehr Buchstaben haben.

js
const singleLetterWord = /\b\w\b/g;
const notSoLongWord = /\b\w{2,6}\b/g;
const longWord = /\b\w{13,}\b/g;

const sentence = "Why do I have to learn multiplication table?";

console.table(sentence.match(singleLetterWord)); // ["I"]
console.table(sentence.match(notSoLongWord)); // [ "Why", "do", "have", "to", "learn", "table" ]
console.table(sentence.match(longWord)); // ["multiplication"]

Optionales Zeichen

In diesem Beispiel passen wir Wrter, die entweder mit "our" oder "or" enden.

js
const britishText = "He asked his neighbour a favour.";
const americanText = "He asked his neighbor a favor.";

const regexpEnding = /\w+ou?r/g;
// \w+ One or several letters
// o   followed by an "o",
// u?  optionally followed by a "u"
// r   followed by an "r"

console.table(britishText.match(regexpEnding));
// ["neighbour", "favour"]

console.table(americanText.match(regexpEnding));
// ["neighbor", "favor"]

Gierig versus nicht-gierig

In diesem Beispiel passen wir ein oder mehrere Wortzeichen oder Leerzeichen mit [\w ]+ und [\w ]+?. Das erste ist gierig und das zweite ist nicht-gierig. Beachten Sie, wie das zweite sofort aufhrt, sobald es die Mindestanforderung erfllt.

js
const text = "I must be getting somewhere near the center of the earth.";
const greedyRegexp = /[\w ]+/;

console.log(text.match(greedyRegexp)[0]);
// "I must be getting somewhere near the center of the earth"
// almost all of the text matches (leaves out the dot character)

const nonGreedyRegexp = /[\w ]+?/; // Notice the question mark
console.log(text.match(nonGreedyRegexp));
// "I"
// The match is the smallest one possible

Siehe auch


Web Proxy Viewer  |  New URL  |  Original Page