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: Passt auf eines der eingeschlossenen Zeichen. Sie können einen Bereich von Zeichen mit einem Bindestrich angeben, aber wenn der Bindestrich als erstes oder letztes Zeichen in den eckigen Klammern erscheint, wird er als literaler Bindestrich verstanden, der in die Zeichenklasse als normales Zeichen aufgenommen wird.
Zum Beispiel ist
Zum Beispiel passen
Zum Beispiel ist
Wenn das |
|
|
Negierte Zeichenklasse:
Passt auf alles, was nicht in den eckigen Klammern eingeschlossen ist. Sie können einen Bereich von Zeichen mit einem Bindestrich angeben, aber wenn der Bindestrich als erstes Zeichen nach dem Hinweis: Das ^-Zeichen kann auch den Anfang der Eingabe anzeigen. |
. |
Platzhalter:
Passt auf jedes einzelne Zeichen außer Zeilenumbrüchen:
|
\d |
Ziffernzeichenklassenflucht:
Passt auf jede Ziffer (arabische Ziffer). Entspricht |
\D |
Nicht-Ziffernzeichenklassenflucht:
Passt auf jedes Zeichen, das keine Ziffer (arabische Ziffer) ist. Entspricht
|
\w |
Wortzeichenklassenflucht:
Passt auf jedes alphanumerische Zeichen aus dem grundlegenden lateinischen Alphabet,
einschließlich des Unterstrichs. Entspricht |
\W |
Nicht-Wortzeichenklassenflucht:
Passt auf jedes Zeichen, das kein Wortzeichen aus dem grundlegenden
lateinischen Alphabet ist. Entspricht |
\s |
Leerzeichenzeichenklassenflucht:
Passt auf ein einzelnes Leerzeichenzeichen, einschließlich Leerzeichen, Tabulator, Formularvorschub,
Zeilenumbruch und andere Unicode-Leerzeichen. Entspricht
|
\S |
Nicht-Leerzeichenzeichenklassenflucht:
Passt auf ein einzelnes Zeichen, das kein Leerzeichen ist. Entspricht
|
\t |
Passt auf einen horizontalen Tabulator. |
\r |
Passt auf einen Wagenrücklauf. |
\n |
Passt auf einen Zeilenumbruch. |
\v |
Passt auf einen vertikalen Tabulator. |
\f |
Passt auf einen Formularvorschub. |
[\b] |
Passt auf einen Rückschritt. Wenn Sie nach dem Wortgrenzen-Assertion
(\b) suchen, sehen Sie
Assertions.
|
\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
|
\xhh
|
Passt auf das Zeichen mit dem Code hh (zwei
hexadezimale Ziffern).
|
\uhhhh
|
Passt auf 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 auf das Zeichen mit
dem Unicode-Wert U+hhhh oder U+hhhhh
(hexadezimale Ziffern).
|
\p{UnicodeProperty},
\P{UnicodeProperty}
|
Unicode-Zeichenklassenflucht: Passt auf ein Zeichen basierend auf seinen Unicode-Zeichen Eigenschaften: zum Beispiel, Emoji-Zeichen, oder japanische katakana-Zeichen oder chinesische/japanische Hanji/Kanji-Zeichen, usw.). |
\ |
Gibt an, dass das folgende Zeichen speziell behandelt oder "entkommen" werden sollte. Es verhält sich auf eine von zwei Arten.
Hinweis: Um auf dieses Zeichen wörtlich zu passen, entkommen Sie es
mit sich selbst. Mit anderen Worten, um nach |
x|y
|
Disjunktion:
Passt entweder auf "x" oder "y". Jede durch ein Pipe-Zeichen (
Hinweis: Eine Disjunktion ist eine andere Möglichkeit, "eine Reihe von Wahlmöglichkeiten" anzugeben, ist jedoch keine Zeichenklasse. Disjunktionen sind keine Atome — Sie müssen eine Gruppe verwenden, um sie Teil eines größeren Musters zu machen. |
Beispiele
>Suche nach einer Reihe von Ziffern
In diesem Beispiel passen wir eine Folge von 4 Ziffern mit \d{4} an. \b gibt eine Wortgrenze an (d.h. nicht in der Mitte einer Zahlenfolge starten oder enden).
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 im Zeichenklassenflucht-Referenz.
Suche nach einem Wort (aus dem lateinischen Alphabet), das mit A beginnt
In diesem Beispiel passen wir ein Wort an, das mit dem Buchstaben A beginnt. \b gibt eine Wortgrenze an (d.h. nicht in der Mitte eines Wortes starten). [aA] gibt den Buchstaben "a" oder "A" an. \w+ steht für jedes Zeichen aus dem lateinischen Alphabet, mehrmals ( + ist ein Quantifizierer). Beachten Sie, dass es nicht notwendig ist, eine abschließende \b-Grenze zu setzen, da wir bereits passen, bis keine Wortzeichen mehr vorhanden sind.
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 im Zeichenklassenflucht-Referenz.
Suche nach einem Wort (aus Unicode-Zeichen)
Anstatt des lateinischen Alphabets können wir einen Bereich von Unicode-Zeichen verwenden, um ein Wort zu identifizieren (und somit mit Texten in anderen Sprachen wie Russisch oder Arabisch umzugehen). 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 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 im Unicode-Zeichenklassenflucht-Referenz.
Zählen von Vokalen
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 casesensitiv zu machen, sodass 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
- Quantifiers Leitfaden
- Gruppen und Rückverweise Leitfaden
RegExp- Reguläre Ausdrücke Referenz
- Zeichenklasse:
[...],[^...] - Zeichenklassenflucht:
\d,\D,\w,\W,\s,\S - Zeichenflucht:
\n,\u{...} - Disjunktion:
| - Unicode-Zeichenklassenflucht:
\p{...},\P{...} - Platzhalter:
.