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]
|
Zeichenklasse: Entspricht einem der eingeschlossenen Zeichen. Sie können einen Zeichenbereich mit einem Bindestrich angeben, aber wenn der Bindestrich als erstes oder letztes Zeichen in den eckigen Klammern erscheint, wird er als wörtlicher Bindestrich angesehen, der in die Zeichenklasse aufgenommen werden soll, als normales Zeichen.
Zum Beispiel ist
Zum Beispiel finden
Ein weiteres Beispiel:
Wenn das |
|
|
Negierte Zeichenklasse:
Entspricht allem, was nicht in den eckigen Klammern eingeschlossen ist. Sie können einen Zeichenbereich
mit einem Bindestrich angeben, aber wenn der Bindestrich als erstes Zeichen nach dem Hinweis: Das ^ Zeichen kann auch den Anfang der Eingabe kennzeichnen. |
. |
Wildcard:
Entspricht jedem einzelnen Zeichen außer Zeilenendzeichen:
|
\d |
Zifferzeichenklassen-Escape:
Entspricht jeder Ziffer (arabische Zahl). Äquivalent zu |
\D |
Nicht-Ziffer-Zeichenklassen-Escape:
Entspricht jedem Zeichen, das keine Ziffer ist (arabische Zahl). Äquivalent
zu |
\w |
Wortzeichenklassen-Escape:
Entspricht jedem alphanumerischen Zeichen aus dem lateinischen Alphabet,
einschließlich des Unterstrichs. Äquivalent zu |
\W |
Nicht-Wortzeichenklassen-Escape:
Entspricht jedem Zeichen, das kein Wortzeichen aus dem lateinischen
Alphabet ist. Äquivalent zu |
\s |
Leerzeichen-Zeichenklassen-Escape:
Entspricht einem einzelnen Leerzeichenzeichen, einschließlich Leerzeichen, Tabulator, Formfeed, Zeilenumbruch und andere Unicode-Leerzeichen. Äquivalent zu
|
\S |
Nicht-Leerzeichen-Zeichenklassen-Escape:
Entspricht einem einzelnen Zeichen, das kein Leerzeichen ist. Äquivalent zu
|
\t |
Entspricht einem horizontalen Tabulator. |
\r |
Entspricht einem Wagenrücklauf. |
\n |
Entspricht einem Zeilenumbruch. |
\v |
Entspricht einem vertikalen Tabulator. |
\f |
Entspricht einem Papier-Vormal. |
[\b] |
Entspricht einem Rückschritt. Wenn Sie nach der Wortgrenzenbestätigung
(\b) suchen, sehen Sie
Bestätigungen.
|
\0 |
Entspricht einem NUL-Zeichen. Folgen Sie nicht mit einer weiteren Ziffer darauf. |
\cX
|
Entspricht einem Steuerzeichen unter Verwendung
Caret-Notation, wobei „X“ ein Buchstabe von A–Z oder a–z ist (entsprechend den Codepunkten
|
\xhh
|
Hex-Escape:
Entspricht dem Zeichen mit dem Code hh (zwei
hexadezimale Ziffern).
|
\uHHHH
|
Unicode-Escape:
Entspricht einer UTF-16-Codeeinheit mit dem Wert
HHHH (vier hexadezimale Ziffern).
|
\u{H…H}
|
Unicode-Codepunkt-Escape:
(Nur wenn das u-Flag gesetzt ist.) Entspricht dem Zeichen mit
dem Unicode-Wert U+H…H (1 bis 6 hexadezimale Ziffern).
|
\p{UnicodeProperty},
\P{UnicodeProperty}
|
Unicode-Zeichenklassen-Escape: Entspricht einem Zeichen basierend auf seinen Unicode-Zeichen-Eigenschaften: zum Beispiel Emoji-Zeichen, oder japanische Katakana-Zeichen, oder chinesische/japanische Han/Kanji-Zeichen, usw.). |
\ |
Deutet an, dass das folgende Zeichen speziell behandelt oder "escaped" werden soll. Es verhält sich auf eine von zwei Arten.
Hinweis: Um dieses Zeichen wörtlich zu erfassen, "escapen" Sie es mit sich selbst. Um nach |
x|y
|
Disjunktion:
Entspricht entweder „x“ oder „y“. Jede Komponente, getrennt durch eine Pipe (
Hinweis: Eine Disjunktion ist eine andere Möglichkeit, "eine Menge von Auswahlmöglichkeiten" zu spezifizieren, aber es ist keine Zeichenklasse. Disjunktionen sind keine Atome — Sie müssen eine Gruppe verwenden, um sie zu einem größeren Muster zu machen. |
Beispiele
>Nach einer Serie von Ziffern suchen
In diesem Beispiel suchen wir nach einer Sequenz von 4 Ziffern mit \d{4}. \b steht für eine Wortgrenze (d.h. fangen Sie nicht in der Mitte einer Zahlenreihe an oder hören Sie dort auf zu passen).
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.
Nach einem Wort (aus dem lateinischen Alphabet) suchen, das mit A beginnt
In diesem Beispiel suchen wir ein Wort, das mit dem Buchstaben A beginnt. \b steht für eine Wortgrenze (d.h. fangen Sie nicht in der Mitte eines Wortes an zu passen). [aA] steht für den Buchstaben „a“ oder „A“. \w+ steht für jedes Zeichen aus dem lateinischen Alphabet, mehrere Male (+ ist ein Quantifizierer). Da wir bereits so lange übereinstimmen, bis keine weiteren Wortzeichen mehr vorhanden sind, ist keine abschließende \b-Grenze erforderlich.
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.
Nach einem Wort suchen (aus Unicode-Zeichen)
Statt des lateinischen Alphabets können wir einen Bereich von Unicode-Zeichen verwenden, um ein Wort zu identifizieren (und so mit Texten in anderen Sprachen wie Russisch oder Arabisch umgehen können). 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.
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 zu beachten und so sowohl Groß- als auch Kleinbuchstaben der Vokale zu finden.
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
- Leitfaden zu regulären Ausdrücken
- Leitfaden zu Bestätigungen
- Leitfaden zu Quantifizierern
- Leitfaden zu Gruppen und Rückverweisen
RegExp- Referenz zu regulären Ausdrücken
- Zeichenklasse:
[...],[^...] - Zeichenklassen-Escape:
\d,\D,\w,\W,\s,\S - Zeichen-Escape:
\n,\u{...} - Disjunktion:
| - Unicode-Zeichenklassen-Escape:
\p{...},\P{...} - Wildcard:
.