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

View in English Always switch to English

Zeichenklassen

Zeichenklassen unterscheiden Arten von Zeichen, wie zum Beispiel die Unterscheidung zwischen Buchstaben und Ziffern.

Probieren Sie es aus

const chessStory = "He played the King in a8 and she moved her Queen in c2.";
const regexpCoordinates = /\w\d/g;
console.log(chessStory.match(regexpCoordinates));
// Expected output: Array [ 'a8', 'c2']

const moods = "happy 🙂, confused 😕, sad 😢";
const regexpEmoticons = /[\u{1F600}-\u{1F64F}]/gu;
console.log(moods.match(regexpEmoticons));
// Expected output: Array ['🙂', '😕', '😢']

Typen

Zeichen Bedeutung
[xyz]
[a-c]

Zeichenklasse: Passt auf eines der eingeschlossenen Zeichen. Sie können eine Zeichenreihe durch einen Bindestrich angeben, aber wenn der Bindestrich als erstes oder letztes Zeichen innerhalb der eckigen Klammern erscheint, wird er als wörtlicher Bindestrich betrachtet, der in die Zeichenklasse als normales Zeichen aufgenommen wird.

Zum Beispiel ist [abcd] dasselbe wie [a-d]. Sie passen auf das "b" in "Brisket" und das "c" in "Chop".

Zum Beispiel passen [abcd-] und [-abcd] auf das "b" in "Brisket", das "c" in "Chop" und den "-" (Bindestrich) in "non-profit".

Zum Beispiel ist [\w-] dasselbe wie [A-Za-z0-9_-]. Beide passen auf das "b" in "Brisket", das "c" in "Chop" und das "n" in "non-profit".

Wenn der unicodeSets (v)-Schalter aktiviert ist, hat die Zeichenklasse einige zusätzliche Funktionen. Weitere Informationen finden Sie in der Zeichenklasse-Referenz.

[^xyz]
[^a-c]

Negierte Zeichenklasse: Passt auf alles, was nicht in den eckigen Klammern eingeschlossen ist. Sie können eine Reihe von Zeichen durch einen Bindestrich angeben, aber wenn der Bindestrich als erstes Zeichen nach dem ^ oder als letztes Zeichen innerhalb der eckigen Klammern erscheint, wird er als wörtlicher Bindestrich betrachtet, der in die Zeichenklasse als normales Zeichen aufgenommen wird. Zum Beispiel ist [^abc] dasselbe wie [^a-c]. Sie passen initial auf "o" in "Bacon" und "h" in "Chop".

Hinweis: Das ^-Zeichen kann auch den Anfang der Eingabe anzeigen.

.

Platzhalter: Passt auf jedes einzelne Zeichen außer Zeilenumbruchzeichen: \n, \r, \u2028 oder \u2029. Zum Beispiel passt /.y/ auf "my" und "ay", aber nicht "yes", in "yes make my day", da es kein Zeichen vor "y" in "yes" gibt. Wenn der dotAll (s) Schalter aktiviert ist, passt es auch auf Zeilenumbruchzeichen. Innerhalb einer Zeichenklasse verliert der Punkt seine spezielle Bedeutung und passt auf einen wörtlichen Punkt.

\d

Ziffern-Zeichenklasse-Flucht: Passt auf jede Ziffer (arabische Zahl). Entspricht [0-9]. Zum Beispiel passt /\d/ oder /[0-9]/ auf "2" in "B2 ist die Suitenummer".

\D

Nicht-Ziffern-Zeichenklasse-Flucht: Passt auf jedes Zeichen, das keine Ziffer (arabische Zahl) ist. Entspricht [^0-9]. Zum Beispiel passt /\D/ oder /[^0-9]/ auf "B" in "B2 ist die Suitenummer".

\w

Wortzeichen-Klasse-Flucht: Passt auf jedes alphanumerische Zeichen aus dem grundlegenden lateinischen Alphabet, einschließlich des Unterstrichs. Entspricht [A-Za-z0-9_]. Zum Beispiel passt /\w/ auf "a" in "apple", "5" in "$5.28", "3" in "3D" und "m" in "Émanuel".

\W

Nicht-Wortzeichen-Klasse-Flucht: Passt auf jedes Zeichen, das kein Wortzeichen aus dem grundlegenden lateinischen Alphabet ist. Entspricht [^A-Za-z0-9_]. Zum Beispiel, /\W/ oder /[^A-Za-z0-9_]/ passt auf "%" in "50%" und "É" in "Émanuel".

\s

Leerzeichen-Zeichenklasse-Flucht: Passt auf ein einzelnes Leerzeichen, einschließlich Leerzeichen, Tabulator, Formularvorschub, Zeilenumbruch und andere Unicode-Leerzeichen. Entspricht [\f\n\r\t\v\u0020\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]. Zum Beispiel, /\s\w*/ passt auf " bar" in "foo bar".

\S

Nicht-Leerzeichen-Zeichenklasse-Flucht: Passt auf ein einzelnes Zeichen, das kein Leerzeichen ist. Entspricht [^\f\n\r\t\v\u0020\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]. Zum Beispiel, /\S\w*/ passt auf "foo" in "foo bar".

\t Passt auf einen Horizontal-Tabulator.
\r Passt auf einen Wagenrücklauf.
\n Passt auf einen Zeilenumbruch.
\v Passt auf einen Vertikal-Tabulator.
\f Passt auf einen Formularvorschub.
[\b] Passt auf ein Rückschritt-Zeichen. Wenn Sie die Wortgrenz-Assertion (\b) suchen, siehe Assertionen.
\0 Passt auf ein NUL-Zeichen. Folgen Sie diesem nicht mit einer anderen Ziffer.
\cX

Passt auf ein Steuerzeichen unter Verwendung der Caret-Notation, wobei "X" ein Buchstabe von A–Z oder a–z ist (entsprechend den Codepunkten U+0001U+001A). Zum Beispiel, /\cM\cJ/ passt auf "\r\n".

\xhh Hexadezimal-Flucht: Passt auf das Zeichen mit dem Code hh (zwei hexadezimale Ziffern).
\uHHHH Unicode-Flucht: Passt auf eine UTF-16 Code-Einheit mit dem Wert HHHH (vier hexadezimale Ziffern).
\u{H…H} Unicode-Codepunkt-Flucht: Passt auf das Zeichen mit dem Unicode-Wert U+H…H (1 bis 6 hexadezimale Ziffern). Nur gültig im Unicode-bewussten Modus.
\p{UnicodeProperty}, \P{UnicodeProperty}

Unicode-Zeichenklasse-Flucht: Passt auf ein Zeichen basierend auf seinen Unicode-Zeichen-Eigenschaften: beispielsweise Emoji-Zeichen oder japanische Katakana-Zeichen oder chinesische/japanische Han/Kanji-Zeichen, usw.). Nur gültig im Unicode-bewussten Modus.

\

Gibt an, dass das folgende Zeichen speziell behandelt oder "entschärft" werden sollte. Es verhält sich auf eine von zwei Arten.

  • Für Zeichen, die normalerweise wörtlich behandelt werden, zeigt es an, dass das nächste Zeichen speziell ist und nicht wörtlich interpretiert werden soll. Beispielsweise passt /b/ auf das Zeichen "b". Indem ein Rückstrich vor "b" gesetzt wird, also durch Verwendung von /\b/, wird das Zeichen speziell, um eine Wortgrenze zu bedeuten.
  • Für Zeichen, die normalerweise speziell behandelt werden, zeigt es an, dass das nächste Zeichen nicht speziell ist und wörtlich interpretiert werden sollte. Beispielsweise ist "*" ein spezielles Zeichen, das bedeutet, dass 0 oder mehr Vorkommen des vorangegangenen Zeichens gematcht werden sollen; zum Beispiel bedeutet /a*/, dass 0 oder mehr "a"s passen. Um * wörtlich zu matchen, setzen Sie einen Rückstrich davor; zum Beispiel, /a\*/ passt auf "a*".

Hinweis: Um dieses Zeichen wörtlich zu matchen, entsichern Sie es mit sich selbst. Mit anderen Worten suchen Sie nach \ verwenden Sie /\\/.

x|y

Disjunktion: Passt auf "x" oder "y". Jede Komponente, getrennt durch ein Pipe-Zeichen (|), wird als Alternative bezeichnet. Zum Beispiel, /green|red/ passt auf "green" in "green apple" und "red" in "red apple".

Hinweis: Eine Disjunktion ist eine andere Möglichkeit, "eine Auswahl von Optionen" anzugeben, aber es ist keine Zeichenklasse. Disjunktionen sind keine Atome — Sie müssen eine Gruppe verwenden, um es Teil eines größeren Musters zu machen. [abc] ist funktional äquivalent zu (?:a|b|c).

Beispiele

Nach einer Reihe von Ziffern suchen

In diesem Beispiel passen wir auf eine Folge von 4 Ziffern mit \d{4}. \b zeigt eine Wortgrenze an (d.h. nicht am Anfang oder Ende einer Zahlenfolge matchen).

js
const randomData = "015 354 8787 687351 3512 8735";
const regexpFourDigits = /\b\d{4}\b/g;

console.table(randomData.match(regexpFourDigits));
// ['8787', '3512', '8735']

Siehe weitere Beispiele in der Zeichenklasse-Flucht Referenz.

Nach einem Wort (aus dem lateinischen Alphabet) suchen, das mit A beginnt

In diesem Beispiel passen wir auf ein Wort, das mit dem Buchstaben A beginnt. \b zeigt eine Wortgrenze an (d.h. nicht mitten in einem Wort anfangen zu matchen). [aA] zeigt den Buchstaben "a" oder "A" an. \w+ zeigt jedes Zeichen aus dem lateinischen Alphabet, mehrmals (+ ist ein Quantor). Beachten Sie, dass, da wir bereits matchen, bis keine Wortzeichen mehr vorhanden sind, keine abschließende \b-Grenze notwendig ist.

js
const aliceExcerpt =
  "I'm sure I'm not Ada,' she said, 'for her hair goes in such long ringlets, and mine doesn't go in ringlets at all.";
const regexpWordStartingWithA = /\b[aA]\w+/g;

console.table(aliceExcerpt.match(regexpWordStartingWithA));
// ['Ada', 'and', 'at', 'all']

Siehe weitere Beispiele in der Zeichenklasse-Flucht Referenz.

Nach einem Wort (aus Unicode-Zeichen) suchen

Anstelle des lateinischen Alphabets können wir eine Reihe von Unicode-Zeichen verwenden, um ein Wort zu identifizieren (und so mit Texten in anderen Sprachen wie Russisch oder Arabisch arbeiten). Die "Basic Multilingual Plane" von Unicode enthält die meisten der weltweit verwendeten Zeichen, und wir können Zeichenklassen und Bereiche verwenden, um Wörter zu finden, die mit diesen Zeichen geschrieben sind.

js
const nonEnglishText = "Приключения Алисы в Стране чудес";
const regexpBMPWord = /([\u0000-\u0019\u0021-\uFFFF])+/gu;
// BMP goes through U+0000 to U+FFFF but space is U+0020

console.table(nonEnglishText.match(regexpBMPWord));
["Приключения", "Алисы", "в", "Стране", "чудес"];

Siehe weitere Beispiele in der Unicode-Zeichenklasse-Flucht Referenz.

Vokale zählen

In diesem Beispiel zählen wir die Anzahl der Vokale (A, E, I, O, U, Y) in einem Text. Das g-Flag wird verwendet, um alle Vorkommen des Musters im Text zu matchen. Das i-Flag macht das Muster nicht zwischen Groß- und Kleinschreibung unterscheidend, so dass es sowohl Groß- als auch Kleinbuchstaben-Vokale matched.

js
const aliceExcerpt =
  "There was a long silence after this, and Alice could only hear whispers now and then.";
const regexpVowels = /[aeiouy]/gi;

console.log("Number of vowels:", aliceExcerpt.match(regexpVowels).length);
// Number of vowels: 26

Siehe auch