| .. | ||
| aufgabe.js | ||
| index.html | ||
| musterloesung.js | ||
| README.md | ||
| test_aufgabe.js | ||
🌐 JS 07: Reguläre Ausdrücke & Textverarbeitung
Willkommen zu Modul 07 des JavaScript-Kurses! In diesem Modul lernst du die Kunst des Pattern Matchings und der Textanalyse mit Regulären Ausdrücken (RegExp).
🎯 Lernziele
Nach diesem Modul kannst du:
- Reguläre Ausdrücke (RegExp) in JavaScript sowohl als Literal (
/muster/flags) als auch über den Konstruktor (new RegExp(...)) erstellen. - Flags wie
g(global),i(case-insensitive) undm(multiline) gezielt steuern. - Metazeichen (
\d,\w,\s,.,^,$) und Quantifizierer (+,*,?,{min,max}) souverän kombinieren. - Strings mit
regex.test()validieren und mitstr.match()Fundstellen extrahieren. - Texte mit
str.replace()und Capturing Groups ($1,$2) formatieren und sensible Daten maskieren. - Komplexe Validierungsregeln wie Passwort- und E-Mail-Prüfungen sauber umsetzen.
💡 Theoretische Grundlagen
1. Die zwei Wege zur RegExp-Erstellung
// 1. Literal (schnell, statisch kompiliert, Standardfall):
const regexLiteral = /^[A-Z][a-z]+$/;
// 2. RegExp-Objekt (dynamisch, erlaubt Variablen im Suchmuster):
const userKeyword = "admin";
const regexDynamic = new RegExp(`^${userKeyword}$`, "i");
2. Metazeichen-Übersicht
| Metazeichen | Bedeutung | Beispiel-Treffer |
|---|---|---|
\d |
Ziffer (0-9) | "5", "9" |
\D |
Keine Ziffer | "a", "!" |
\w |
Wortzeichen ([a-zA-Z0-9_]) |
"x", "7", "_" |
\W |
Kein Wortzeichen | " ", "@", "-" |
\s |
Whitespace (Leerzeichen, Tab, Umbruch) | " ", "\t", "\n" |
. |
Beliebiges Zeichen (außer Umbruch) | "a", "8", "%" |
^ |
Textanfang | /^Start/ |
$ |
Textende | /Ende$/ |
3. Quantifizierer (Häufigkeiten)
| Quantifizierer | Bedeutung | Beispiel |
|---|---|---|
+ |
Mindestens 1 Mal (1 bis unendlich) | \d+ matcht "1234" |
* |
0 bis unendlich (optional) | a* matcht "" oder "aaa" |
? |
0 oder 1 Mal (optional) | https? matcht "http" & "https" |
{n} |
Exakt n Mal |
\d{4} matcht "2024" |
{min,max} |
Zwischen min und max Mal |
\d{2,4} |
{min,} |
Mindestens min Mal |
.{8,} (mind. 8 Zeichen) |
4. Capturing Groups & Maskierung mit replace
Runde Klammern ( ... ) bilden Gruppen. Im Ersetzungs-String kann mit $1, $2 usw. darauf zugegriffen werden:
// Telefonnummer formatieren:
const nummer = "01711234567";
const formatiert = nummer.replace(/(\d{4})(\d+)/, "$1-$2");
console.log(formatiert); // "0171-1234567"
🕵️ Didaktische Analogie: Der Muster-Detektiv & Schablonen-Scanner
Ein Regulärer Ausdruck ist wie ein Röntgengerät mit Lochmaske:
- Du legst das Dokument (den Fließtext) auf den Scanner.
- Die Lochmaske blendet alle irrelevanten Wörter aus.
- Nur Abschnitte, die exakt in die Aussparungen passen (z. B. 4er-Zahlenblöcke für Kreditkarten oder das
@-Zeichen mit Domain), leuchten grün auf.
🎯 Aufgabenübersicht in aufgabe.js
- TODO 1:
istGueltigeEmail(email):- Prüft E-Mails auf das Format
name@domain.tld(mind. 2-stellige TLD).
- Prüft E-Mails auf das Format
- TODO 2:
findeTelefonnummern(text):- Findet Telefonnummern wie
+49 170 1234567,0171-1234567etc.
- Findet Telefonnummern wie
- TODO 3:
extrahiereHashtags(text):- Findet alle Social-Media-Tags (
#hashtag).
- Findet alle Social-Media-Tags (
- TODO 4:
maskiereKreditkarte(text):- Anonymisiert 16-stellige Kreditkartennummern zu
****-****-****-1234.
- Anonymisiert 16-stellige Kreditkartennummern zu
- TODO 5:
istStarkesPasswort(passwort):- Prüft Passwortstärke (mind. 8 Zeichen, Klein-, Großbuchstaben, Ziffer, Sonderzeichen).
🧪 Tests ausführen
Führe die Testsuite in der Web-IDE oder lokal aus:
# In der Web-IDE: Klicke auf 'Code ausführen & testen'