Regex für Domainnamen

Verwende /^(?:[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?\.)+[A-Za-z]{2,}$/, um zu prüfen, ob ein ganzer String ein gültiger Domainname ist. Jedes Beispiel unten wurde mit dem Muster getestet, und du kannst es mit den vorgeladenen Beispielen im Regex-Tester öffnen.

Aktualisiert am

/^(?:[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?\.)+[A-Za-z]{2,}$/
Im Regex-Tester öffnen
EingabeErgebnis
example.com✓ Treffer
sub.example.co.uk✓ Treffer
my-site.dev✓ Treffer
-example.com✗ Kein Treffer
example✗ Kein Treffer
example-.com✗ Kein Treffer
https://example.com✗ Kein Treffer

So funktioniert das Muster

TeilBedeutung
[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?Ein Label mit 1–63 Zeichen, das nicht mit einem Bindestrich beginnt oder endet
\.Ein Punkt nach jedem Label
(?:…)+Ein oder mehrere Labels (Subdomains)
[A-Za-z]{2,}$Die Top-Level-Domain

Codebeispiele

JavaScript

const re = /^(?:[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?\.)+[A-Za-z]{2,}$/;
re.test(value); // true or false

Python

import re

bool(re.fullmatch(r'(?:[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?\.)+[A-Za-z]{2,}', value))

PHP

preg_match('/^(?:[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?\.)+[A-Za-z]{2,}$/', $value) === 1;

Hinweise und Einschränkungen

Internationalisierte Domains müssen zuerst in ihre Punycode-Form (xn--…) umgewandelt werden. Schlage die DNS-Einträge einer Domain mit dem DNS-Lookup nach.

Häufige Fragen

Wie lautet der Regex für Domainnamen?
/^(?:[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?\.)+[A-Za-z]{2,}$/ — er prüft den gesamten String. Die Tabelle oben zeigt, was jeder Teil macht.
Welche Beispiele passen?
Von den getesteten Beispielen passen diese: example.com, sub.example.co.uk, my-site.dev. Die anderen nicht.
Wie teste ich diesen Regex?
Klicke auf „Im Regex-Tester öffnen“ – Muster, Flags und Beispieltext werden automatisch geladen, und Treffer werden beim Bearbeiten markiert.