3 Stimmen

Regex für URL mit Portvalidierung

Ich muss eine Url wie die von Webservern validieren. Etwas wie http://localhost:8080/xyz

Wie machen wir das mit regex. Entschuldigung, neu bei regex.

7voto

collapsar Punkte 15887

Die entsprechenden Spezifikationen finden Sie unter rfc 3986 und enthalten reguläre syntaxdefinitionen für alle möglichen url-komponenten. für ihre zwecke sind diese jedoch wahrscheinlich zu allgemein. ein etwas verkürzter ausdruck, der nur urls unter dem http(s)-Protokoll abdeckt, wäre

http[s]?://(([[:alpha:][:digit:]-._~!$&'\(\)*+,;=]|%([0-9A-F]{2}))+|([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))(:[0-9]+)?(/([[:alpha:][:digit:]-._~!$&'\(\)*+,;=]|%([0-9A-F]{2}))*)+(\?([[:alpha:][:digit:]-._~!$&'\(\)*+,;=/?]|%([0-9A-F]{2}))+)?(#([[:alpha:][:digit:]-._~!$&'\(\)*+,;=/?]|%([0-9A-F]{2}))+)?

die vereinfacht werden kann zu

http[s]?://(([^/:\.[:space:]]+(\.[^/:\.[:space:]]+)*)|([0-9](\.[0-9]{3})))(:[0-9]+)?((/[^?#[:space:]]+)(\?[^#[:space:]]+)?(\#.+)?)?

wenn Sie sich über die korrekte Syntax der URL-Komponenten sicher sein können.

Beachten Sie, dass Sie vielleicht restriktivere Muster wünschen, z. B. für die Volltextsuche und um nur iana-registrierte Top-Level-Domains zuzulassen.

Ich hoffe, es hilft,

mit freundlichen Grüßen, carsten

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X