🌐 Lehrpfad 2: Moderne Datenmodelle & OOP

JS 07: Reguläre Ausdrücke & Textverarbeitung

Lerne mächtiges Pattern-Matching, Text-Mining, Datenvalidierung und Maskierung mit JavaScript RegExp.

🔍 1. Grundlagen: RegExp-Syntax & Flags

Ein Regulärer Ausdruck (RegExp) ist ein Suchmuster zur Textanalyse, Validierung und Transformation. In JavaScript erstellst du Regex entweder als Literal mit Schrägstrichen /muster/flags oder über das RegExp-Objekt:

// 1. Literal-Schreibweise (empfohlen bei festen Mustern):
const regexLiteral = /javascript/i; // 'i' = ignore case (Groß-/Kleinschreibung ignorieren)

// 2. Konstruktor-Schreibweise (für dynamische Muster aus Variablen):
const suchwort = "javascript";
const regexDynamic = new RegExp(suchwort, "i");

console.log(regexLiteral.test("Ich liebe JavaScript!")); // true

🚩 Wichtige Flags (Modifikatoren)

  • g (global): Findet alle Vorkommen im gesamten Text (nicht nur das erste).
  • i (case-insensitive): Ignoriert Unterschiede zwischen Groß- und Kleinschreibung.
  • m (multiline): Behandelt Zeilenumbrüche für ^ (Zeilenanfang) und $ (Zeilenende).

🧩 2. Metazeichen & Quantifizierer

RegExp nutzt spezielle Steuerzeichen, um Zeichenklassen und Wiederholungen zu beschreiben:

\d
Beliebige Ziffer (0-9)
\w
Wortzeichen (a-z, A-Z, 0-9, _)
\s
Leerzeichen, Tabulator, Zeilenumbruch
^ & $
Textanfang (^) & Textende ($)
+
1 oder mehrmals (mind. 1)
*
0 oder mehrmals (optional)
?
0 oder 1 Mal (optional)
{min,max}
Wiederholungsanzahl z. B. {8,} (mind. 8)
🕵️ Didaktische Analogie: Der Muster-Detektiv & Schablonen-Scanner

Stelle dir einen Regulären Ausdruck wie eine transparente Loch-Schablone vor, die du über eine riesige Zeitungswand legst. Die Löcher der Schablone sind so gestanzt, dass überall dort, wo eine E-Mail-Adresse, IBAN oder Telefonnummer steht, der Text sofort ins Auge springt, während der restliche Fließtext ausgeblendet wird.

⚙️ 3. RegExp-Methoden in JavaScript

Je nachdem, ob du prüfen, extrahieren oder ersetzen willst, bietet JS passende Methoden:

const text = "Support: info@code.de oder sales@code.de. Tel: 0171-1234567.";

// 1. regex.test(str) -> boolean (perfekt für Validierung):
const hatEmail = /@code\.de/.test(text); // true

// 2. str.match(regex) -> Array mit allen Treffern (mit Flag 'g'):
const emails = text.match(/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g);
console.log(emails); // ["info@code.de", "sales@code.de"]

// 3. str.replace(regex, neu) -> String ersetzen mit Capturing Groups:
const maskiert = text.replace(/(\d{4})-(\d+)/g, "$1-XXXX");
console.log(maskiert); // "... Tel: 0171-XXXX."

📑 4. Cheat-Sheet: RegExp Syntax & Methoden

Syntax / Methode Beispiel Beschreibung
/muster/flags /\d+/g Regex Literal mit Flags
regex.test(str) /^[A-Z]/.test("Hallo") // true Prüft, ob Muster im String vorkommt (liefert true/false)
str.match(regex) "12 a 34".match(/\d+/g) // ["12", "34"] Liefert Array aller Fundstellen
str.replace(regex, sub) "Hi".replace(/i/, "allo") Ersetzt Treffer durch Ersatz-String oder Funktion
[a-z0-9] [A-Z] // Großbuchstabe Zeichenklasse (Matcht ein beliebiges Zeichen im Bereich)
(gruppe) & $1 str.replace(/(\d+)/, "Nr: $1") Capturing Group zum Wiederverwenden von Teiltreffern

🧠 Diagnostischer Selbst-Check

Überprüfe dein Verständnis der Kernkonzepte und typischen Denkfallen, bevor du den Code in der Web-IDE schreibst.

🎯 5. Aufgaben & Checkliste in aufgabe.js

💡 Tipp für Teilziel 4

In str.replace(regex, replacement) kannst du runde Klammern (\d{4}) für die letzten 4 Ziffern verwenden und diese mit $1 im Ersatz-String einfügen!

💻 In Web-IDE öffnen → ← Zurück zu JS 06 Weiter zu JS 08 →