Zeichenklassen
Zeichenklassen unterscheiden Arten von Zeichen, wie z. B. 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]
|
Zeichenklasse: Passt jedes der eingeschlossenen Zeichen. Sie können durch die Verwendung eines Bindestrichs einen Bereich von Zeichen angeben. Erscheint der Bindestrich jedoch als erstes oder letztes Zeichen in den eckigen Klammern, wird er als ein normaler Bindestrich interpretiert und in die Zeichenklasse aufgenommen.
Zum Beispiel ist
Zum Beispiel passen
Zum Beispiel ist
Wenn das |
|
Negierte Zeichenklasse:
Passt alles, was nicht in den eckigen Klammern enthalten ist. Sie können einen Bereich von Zeichen durch die Verwendung eines Bindestrichs angeben. Wenn der Bindestrich jedoch das erste Zeichen nach dem Hinweis: Das Zeichen ^ kann auch den Anfang der Eingabe kennzeichnen. |
. |
Wildcard:
Passt jedes einzelne Zeichen, außer Zeilenumbrüchen:
|
\d |
Ziffernzeichenklasse:
Passt jede Ziffer (arabische Zahl). Entspricht |
\D |
Nicht-Ziffern-Zeichenklasse:
Passt jedes Zeichen, das keine Ziffer (arabische Zahl) ist. Entspricht
|
\w |
Wort-Zeichenklasse:
Passt jedes alphanumerische Zeichen aus dem Basis-Latein-Alphabet,
einschließlich des Unterstrichs. Entspricht |
\W |
Nicht-Wort-Zeichenklasse:
Passt jedes Zeichen, das kein Wortzeichen aus dem Basis-Latein-Alphabet ist. Entspricht |
\s |
Leerzeichen-Zeichenklasse:
Passt ein Einzelzeichen für Leerraum, einschließlich Leerzeichen, Tabulator, Formfeed, Zeilenumbruch und andere Unicode-Leerzeichen. Entspricht
|
\S |
Nicht-Leerzeichen-Zeichenklasse:
Passt ein einzelnes Zeichen, das kein Leerzeichen ist. Entspricht
|
\t |
Passt einen horizontalen Tabulator. |
\r |
Passt einen Wagenrücklauf. |
\n |
Passt einen Zeilenumbruch. |
\v |
Passt einen vertikalen Tabulator. |
\f |
Passt einen Seitenvorschub. |
[\b] |
Passt einen Rückschritt. Wenn Sie die Wortgrenzen-Assertion
(\b ) suchen, siehe
Assertions.
|
\0 |
Passt ein NUL-Zeichen. Dieses darf nicht durch eine andere Ziffer gefolgt werden. |
\cX
|
Passt ein Steuerzeichen mittels
Caretschreibweise, wobei "X" ein Buchstabe von A–Z ist (entsprechend den Codepunkten
|
\xhh
|
Passt das Zeichen mit dem Code hh (zwei
hexadezimale Ziffern).
|
\uhhhh
|
Passt eine UTF-16-Code-Einheit mit dem Wert
hhhh (vier hexadezimale Ziffern).
|
\u{hhhh} oder \u{hhhhh}
|
(Nur wenn das u -Flag gesetzt ist.) Passt das Zeichen mit dem
Unicode-Wert U+hhhh oder U+hhhhh
(hexadezimale Ziffern).
|
\p{UnicodeProperty} ,
\P{UnicodeProperty}
|
Unicode-Zeichenklassen-Escape: Passt ein Zeichen basierend auf dessen Unicode-Zeicheneigenschaften: z. B. Emoji-Zeichen, japanische Katakana-Zeichen, oder chinesische/japanische Han/Kanji-Zeichen, usw.). |
\ |
Zeigt an, dass das folgende Zeichen speziell behandelt oder "escaped" werden soll. Es verhält sich auf zwei Arten:
Hinweis: Um dieses Zeichen wörtlich zu matchen,
escapen Sie es mit sich selbst. Mit anderen Worten: Um nach |
x|y
|
Alternativen:
Passt entweder "x" oder "y". Jeder Bestandteil, getrennt durch einen Pipe (
Hinweis: Eine Alternative ist eine andere Methode, um "eine Auswahl von Möglichkeiten" anzugeben, aber es ist keine Zeichenklasse. Alternativen sind keine Atome — Sie müssen eine Gruppe verwenden, um sie Teil eines größeren Musters zu machen. |
Beispiele
Eine Zahlenreihe suchen
In diesem Beispiel suchen wir eine Sequenz aus 4 Ziffern mit \d{4}
. \b
zeigt eine Wortgrenze an (d. h. nicht innerhalb einer Zahlenreihe zu starten oder zu beenden).
const randomData = "015 354 8787 687351 3512 8735";
const regexpFourDigits = /\b\d{4}\b/g;
console.table(randomData.match(regexpFourDigits));
// ['8787', '3512', '8735']
Weitere Beispiele finden Sie in der Zeichenklassen-Escape-Referenz.
Ein Wort (aus dem lateinischen Alphabet) suchen, das mit A beginnt
In diesem Beispiel suchen wir ein Wort, das mit dem Buchstaben A beginnt. \b
zeigt eine Wortgrenze an (d. h. nicht in der Mitte eines Wortes zu starten). [aA]
zeigt den Buchstaben "a" oder "A" an. \w+
zeigt ein beliebiges Zeichen aus dem lateinischen Alphabet mehrere Male an (+
ist ein Quantifizierer). Beachten Sie, dass, da wir bereits bis zu keinen weiteren Wortzeichen passen, eine abschließende \b
-Grenze nicht erforderlich ist.
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']
Weitere Beispiele finden Sie in der Zeichenklassen-Escape-Referenz.
Ein Wort (aus Unicode-Zeichen) suchen
Statt des lateinischen Alphabets können wir eine Vielzahl von Unicode-Zeichen verwenden, um ein Wort zu identifizieren (und somit Text in anderen Sprachen wie Russisch oder Arabisch zu verarbeiten). Die "Grundlegende Mehrsprachige Ebene" von Unicode enthält die meisten Zeichen, die weltweit verwendet werden, und wir können Zeichenklassen und Bereiche verwenden, um Wörter zu finden, die mit diesen Zeichen geschrieben wurden.
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));
["Приключения", "Алисы", "в", "Стране", "чудес"];
Weitere Beispiele finden Sie in der Unicode-Zeichenklassen-Escape-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 finden. Das i
-Flag wird verwendet, um das Muster nicht zwischen Groß- und Kleinschreibung zu unterscheiden, damit es sowohl Groß- als auch Kleinbuchstaben-Vokale findet.
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
- Reguläre Ausdrücke Leitfaden
- Assertions Leitfaden
- Quantifizierer Leitfaden
- Gruppen und Rückverweise Leitfaden
RegExp
- Reguläre Ausdrücke Referenz
- Zeichenklasse:
[...]
,[^...]
- Zeichenklassen-Escape:
\d
,\D
,\w
,\W
,\s
,\S
- Zeichen-Escape:
\n
,\u{...}
- Alternativen:
|
- Unicode-Zeichenklassen-Escape:
\p{...}
,\P{...}
- Wildcard:
.