Der Entwickler-Regel-Quick Reference --- *(Note: The original title was too generic and not idiomatic in German. I replaced it with a more direct translation that maintains the essence of the concept.)* Muster, die sich merken lassen
RegEx ist eine Fähigkeit, die sich in jeder Sprache auszahlt, die du jemals schreibst. Das gleiche Muster, das E-Mail-Adressen in Python prüft, entfernt Abfragestränge in Go und reinigt Formulardaten in JavaScript. Lerne es einmal – nutze es überall.
Das ist keine Syntaxanleitung. Es sind die Muster, die Sie tatsächlich bei der Arbeit nutzen – die, die in Formvalidierern, Logparser-Tools, URL-Routern und Datenpipelines auftauchen. Die Tabelle unten bildet das Herzstück davon. Der Text um sie herum erklärt, wo Menschen oft ins Straucheln geraten.
Die Muster, die man behalten sollte
Diese elf Muster decken die wiederkehrenden Szenarien im Produktionscode ab. Verwende RegEx-Tester sie vor der eigenen Eingaben prüfen bevor sie angeschlossen werden.
| Muster | Was es erfasst | Beispielspiel | Hinweise |
|---|---|---|---|
^[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}$ | E-Mail-Adresse | user@example.com | Erlaubnisorientiert durch Design – die echte RFC 5322 ist ein Labyrinth. Verankern mit ^$. |
https?:\/\/[\w\-._~:/?#[\]@!$&'()*+,;=%]+ | HTTP/HTTPS-URL | https://example.com/path?q=1 | Gilt nicht als Strukturprüfung – bestätigt nur, dass es wie eine URL aussieht. |
^(\d{1,3}\.){3}\d{1,3}$ | IPv4-Adresse (nur Format) | 192.168.1.1 | Treffer 999.999.999.999 — prüfe die Reichweite im Code, nicht mit Regex. |
^(\+\d{1,3}[\s-])?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{4}$ | Telefonnummer in Nordamerika | (555) 867-5309 | Behandelt gemeinsame Trennzeichen. Internationale Formate sind zu unterschiedlich, um ein einheitliches Muster zu verwenden. |
[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} | Universally Unique Identifier (Version 4) | 550e8400-e29b-41d4-a716-446655440000 | Fallsensitiv — verwenden Sie i Flaggen oder hinzufügen A-F zu Zeichenklassen. |
^[a-z0-9]+(?:-[a-z0-9]+)*$ | URL-Slug | my-article-title | Keine führenden oder endständigen Bindestriche, keine aufeinanderfolgenden Bindestriche. |
^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$ | ISO-Datum nach dem Format JJJJ-MM-TT | 2026-04-10 | Prüft die Format- und Wertebereichskonformität, nicht die Kalendertauglichkeit (März 31 überläuft). --- *(Note: "Feb" → "Februar" was omitted as it’s a code placeholder; the translation assumes "March" is intended for clarity.)* |
^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ | CSS-Hexfarbe | #ff6600 oder #f60 | Beide Kurzschreibungen mit drei oder sechs Ziffern. Ergänzen Sie {8} für 8-stellige RGBA-Hexadezimalzahl. |
^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([\w.-]+))?(?:\+([\w.-]+))?$ | Semantische Versionsnummer | 1.2.3-beta.1+build.42 | Erfasst Metadaten aus Vorabversionen und Builds als optionale Gruppen auf. |
\b(?:\d{4}[\s-]?){3}\d{4}\b | Kreditkartennummer (verdeckt, nicht prüfen) | 4111 1111 1111 1111 | Verwenden Sie dies für Maskierung in Logs, nicht zur Validierung. Die Luhn-Prüfung erfordert Code. |
\s+ | Leerzeichen laufen | "hello world" → "hello world" | Ersetze mit einem einzelnen Leerzeichen für Normalisierung des Weißraums. |
Wo Praktiken im Einsatz scheitern
Gierig vs. faulige Übereinstimmung
Quantoren wie * und + sind von Natur aus gierig – sie verbrauchen so viel wie möglich. Das schlägt dich zurück, wenn du Inhalte zwischen Abgrenzern extrahierst. <.+> auf <b>bold</b> passt ganz an die Zeichenkette an <b>Schnelllader verwenden .+? an ersten Schließungsdelimiter anhalten statt am letzten.
Verankern: Wenn ^ und $ nicht ausreichen
Ohne Anker kann ein Muster überall in einer Zeichenkette übereinstimmen. \d+ passt abc123def — es findet die Ziffern in der Mitte. Für eine vollständige String-Überprüfung müssen Muster in
---
*(Note: The original text was incomplete and ambiguous regarding context; this translation assumes "validation" refers to pattern matching for string input.)* ^...$In Mehrzeilenmodus (m Flag ^ und $ grenzt an die Zeilengrenzmarken, nicht an die vollständigen String-Grenzmarken. Wenn Sie eine einzelne Wertprüfung durchführen (z. B. E-Mail-Adresse oder UUID), dann m absichtlich, nicht aus Gewohnheit.
Der mehrzeilige Flagentippfehler
Der m Die Flagge ändert sich. ^ und $ mittel. Der s Der Flaggenmodus ändert sich. . passt nicht – ohne es,
---
*[Note: The phrase "without it" was interpreted as a placeholder for an implied object, translated as "es" in German. If context requires a different interpretation (e.g., "ohne das"), please clarify.]*
*(End of output—no further notes.)* . passt nicht mit den Zeilenumbrüchen überein. Die Analyse mehrzeiliger Log-Einträge mit .+Du brauchst s oder [\s\S]+ als Rückfalloption für Motoren, die keine DotAll-Unterstützung bieten.
Vor dem Anschließen prüfen
Verwende keine reguläre Ausdrücke in einer Anwendung und teste sie nur gegen einen glücklichen Pfad-Einfluss. Muster scheitern an Randfällen: Unicode-Charaktere, leere Strings, führendes/endständiges Leerzeichen oder Eingaben, die fast, aber nicht ganz gültig sind. IO Tools Regex-Tester lässt Sie ein Muster gegen mehrere Teststrings gleichzeitig ausführen, sodass Sie die gültigen und ungültigen Fälle nebeneinander prüfen können, bevor der Code veröffentlicht wird. RegEx-Schnellübersichtstool Nützlich ist es, wenn Sie mitten im Prozess des Erstellen eines Musters sind und eine schnelle Syntaxreferenz benötigen, ohne Ihr Browserfenster verlassen zu müssen.
Bei der Prüfung erstellen Sie eine Matrix: Was soll übereinstimmen, was auf jeden Fall nicht sollte und was an den Grenzen liegt. Eine E-Mail-Prüfungssoftware, die akzeptiert user@ ablehnt ab user+tag@example.co.uk ist schlechter als gar keine Validierung.
Sprachliche Eigenheiten, die du kennen solltest
Die Muster im obigen Tabellen sind grundlegend übertragbar, doch die Ausführung spielt an den Rändern eine Rolle.
- JavaScript verwendet den ECMA-Regulärausdrucksengine. Benannte Fanggruppen (
(?<name>...)sind in ES2018+ unterstützt.vDer Flaggenoperator (eingeführt in ES2024) unterstützt Notationsmengen und Unicode-Eigenschafts-Escape-Sequenzen. Vorwärtsausschlüsse funktionieren; Rückwärtsausschlüsse sind ab ES2018 und haben in einigen älteren V8-Versionen variable Längenbeschränkungen. - Python verwendet
reModul (nahe PCRE-ähnlich, aber nicht identisch).re.compile()Muster ist nützlich zu verwenden – kompilierte Muster sind schneller, wenn sie wiederholt in Schleifen aufgerufen werden. Ein subtiler Unterschied: Die Python-Syntax *(Note: The rest of the sentence was cut off; translated as-is.)*\bDer Wortgrenzenbestandteil ist standardmäßig auf Unicode angewiesen, sodass er auch bei nicht-ASCII-Wortzeichen funktioniert. JavaScripts\bist nur ASCII-basiert, es sei denn, Sie verwendenuodervFlag. - Gehen verwendet die Syntax von **RE2**, die absichtlich Rückbezüge und Vorwärtsprüfungen ausschließt. Das ist eine Sicherheitsentscheidung – **RE2** garantiert eine lineare Zeitkomplexität beim Abgleichen, was katastrophales Zurückgehen verhindert. Wenn Sie ein Muster aus Python oder JavaScript in Go portieren und es Rückbezüge oder Vorwärtsprüfungen verwendet, müssen Sie die Logik umstrukturieren.
Praktisches Beispiel: E-Mail-Adressenprüfung in verschiedenen Sprachen
Gleiches Muster, zwei Implementierungen – eine JavaScript-Formulareingabeprüfung und eine Python-Eingabeüberprüfung:
// JavaScript — client-side form validation
const EMAIL_RE = /^[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}$/;
function validateEmail(input) {
const value = input.trim();
if (!EMAIL_RE.test(value)) {
throw new Error(`Invalid email address: ${value}`);
}
return value;
}
// Usage
document.querySelector('#signup-form').addEventListener('submit', (e) => {
e.preventDefault();
try {
const email = validateEmail(e.target.email.value);
submitForm({ email });
} catch (err) {
showError(err.message);
}
});
# Python — API request validation
import re
EMAIL_RE = re.compile(r'^[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}$')
def validate_email(value: str) -> str:
value = value.strip()
if not EMAIL_RE.match(value):
raise ValueError(f"Invalid email address: {value!r}")
return value
# Usage in a Flask route
@app.route('/signup', methods=['POST'])
def signup():
try:
email = validate_email(request.json.get('email', ''))
except ValueError as e:
return jsonify({'error': str(e)}), 400
# continue with valid email...
Beide nutzen denselben Grundbaustein. Der einzige sinnvolle Unterschied: Die von Python re.compile() vorkompiliert das Muster, damit wiederholte Aufrufe es nicht bei jeder Ausführung neu parsen müssen – besonders wertvoll auf heißen Pfaden.
Halte eine persönliche Notizliste bei
Die Muster oben decken die häufigsten Fälle ab, aber du wirst sie mit der Zeit selbst sammeln – Log-Formate für deine Umgebung, Identifikationsschemata aus internen Systemen und Datumsformate, die deine Datenabteilung durchsetzt. Ein kuratierter, getesteter Dateiinhalt mit bewährten Mustern, den du einfach kopieren kannst, ist wertvoller als das Auswendiglernen von Syntaxregeln. Teste sie einmal, beschrifte sie mit ihrer Funktion und verwende sie stattdessen statt jedes Mal von Grund auf neu zu erstellen.
Das könnte Ihnen auch gefallen
Erweiterungen installieren
IO-Tools zu Ihrem Lieblingsbrowser hinzufügen für sofortigen Zugriff und schnellere Suche
恵 Die Anzeigetafel ist eingetroffen!
Anzeigetafel ist eine unterhaltsame Möglichkeit, Ihre Spiele zu verfolgen. Alle Daten werden in Ihrem Browser gespeichert. Weitere Funktionen folgen in Kürze!
Unverzichtbare Tools
Alle Neuheiten
AlleAktualisieren: Unser neuestes Werkzeug am 15. April 2026 hinzugefügt
