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 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
Zum Beispiel passen
Zum Beispiel ist
Wenn der |
|
|
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 Hinweis: Das ^-Zeichen kann auch den Anfang der Eingabe anzeigen. |
. |
Platzhalter:
Passt auf jedes einzelne Zeichen außer Zeilenumbruchzeichen:
|
\d |
Ziffern-Zeichenklasse-Flucht:
Passt auf jede Ziffer (arabische Zahl). Entspricht |
\D |
Nicht-Ziffern-Zeichenklasse-Flucht:
Passt auf jedes Zeichen, das keine Ziffer (arabische Zahl) ist. Entspricht
|
\w |
Wortzeichen-Klasse-Flucht:
Passt auf jedes alphanumerische Zeichen aus dem grundlegenden lateinischen Alphabet,
einschließlich des Unterstrichs. Entspricht |
\W |
Nicht-Wortzeichen-Klasse-Flucht:
Passt auf jedes Zeichen, das kein Wortzeichen aus dem grundlegenden
lateinischen Alphabet ist. Entspricht |
\s |
Leerzeichen-Zeichenklasse-Flucht:
Passt auf ein einzelnes Leerzeichen, einschließlich Leerzeichen, Tabulator, Formularvorschub, Zeilenumbruch und andere Unicode-Leerzeichen. Entspricht
|
\S |
Nicht-Leerzeichen-Zeichenklasse-Flucht:
Passt auf ein einzelnes Zeichen, das kein Leerzeichen ist. Entspricht
|
\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
|
\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.
Hinweis: Um dieses Zeichen wörtlich zu matchen, entsichern Sie es
mit sich selbst. Mit anderen Worten suchen Sie nach |
x|y
|
Disjunktion:
Passt auf "x" oder "y". Jede Komponente, getrennt durch ein Pipe-Zeichen (
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. |
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).
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.
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.
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.
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
- Quantoren Leitfaden
- Gruppen und Rückverweise Leitfaden
RegExp- Reguläre Ausdrücke Referenz
- Zeichenklasse:
[...],[^...] - Zeichenklasse-Flucht:
\d,\D,\w,\W,\s,\S - Zeichenflucht:
\n,\u{...} - Disjunktion:
| - Unicode-Zeichenklasse-Flucht:
\p{...},\P{...} - Platzhalter:
.