Regex Muster zum Abgleichen und Validieren von HTTP/HTTPS URLs mit Abfragezeichenfolgen, Fragmenten, Ports und Pfadsegmenten. Kopierbare Snippets.
https://devbento.dev/tools/regex-testerIndex 20https://sub.domain.example.co.uk/path/to/resource#sectionIndex 108https://example.com/search?q=hello+world&lang=enIndex 195Das obige Muster stimmt mit HTTP und HTTPS URLs überein, einschließlich Pfaden, Abfragezeichenfolgen und Fragmenten. Es lehnt ftp:// Schemata und einfache Strings ohne Protokoll ab. Von den obigen Teststrings stimmt es mit https://example.com, der DevBento Tool URL, der lokalen API mit Abfrageparametern und der Subdomain URL mit Fragment überein. Es stimmt nicht mit ftp://not-http.com oder dem einfachen Textstring überein.
| Segment | Muster | Was übereinstimmt |
|---|---|---|
| Protokoll | https?:\/\/ |
http:// oder https:// |
| Host | [\w\-]+(\.[\w\-]+)+ |
Domainname mit mindestens einem Punkt (z.B. example.com, sub.domain.co.uk) |
| Pfad, Abfrage, Fragment | ([\w.,@?^=%&:/~+#\-]*[\w@?^=%&/~+#\-])? |
Optionaler Pfad und Abfragezeichenfolge, darf nicht mit Interpunktion enden |
Die letzte Zeichenklasse ist absichtlich nicht am Ende verankert. Die zweite Zeichenklasse innerhalb der Gruppe ([\w@?^=%&/~+#\-]) stellt sicher, dass die Übereinstimmung nicht an einem abschließenden Punkt oder Komma stoppt, wodurch vermieden wird, Interpunktion zu erfassen, die einer URL in Prosa folgt.
Für JavaScript ist new URL(input) die zuverlässigste Methode, um zu überprüfen, ob ein String eine gültige absolute URL ist:
function isValidUrl(str) {
try {
const url = new URL(str);
return url.protocol === 'http:' || url.protocol === 'https:';
} catch {
return false;
}
}
Dies behandelt Grenzfälle, die Regex nicht behandelt: IPv6 Adressen (http://[::1]:8080/), internationalisierte Domainnamen nach Punycode Normalisierung und prozentcodierte Zeichen in Pfaden. Die Protokollprüfung filtert javascript:, data: und andere Schemata, die du wahrscheinlich nicht akzeptieren möchtest.
URLs mit Authentifizierungsdaten (http://user:pass@example.com) werden nicht abgeglichen, weil das @ im Pfadteil des Musters nicht enthalten ist. URLs mit IPv6 Hosts in eckigen Klammern (http://[::1]:8080/path) werden nicht abgeglichen. URLs ohne Pfad (https://example.com) werden korrekt abgeglichen. Daten-URIs (data:text/plain;base64,...) werden nicht abgeglichen, da das Muster nur http/https zulässt.
Teste deine URL Muster mit Live-Ergebnissen im Regex Tester.
Nothing you paste leaves this tab. Every tool runs entirely in your browser — no upload, no server, no account.