Feedback

C# - Validierung eines URL

Veröffentlicht von am 10/4/2008
(1 Bewertungen)
Validiert einen URL.
/// <summary>
    /// Determines whether the specified URL is in a valid format.
    /// </summary>
    /// <param name="Url">URL to validate.</param>
    /// <returns><c>True</c> if the URL is formatted correctly, otherwise <c>False</c>.</returns>
    /// <remarks></remarks>
    public static bool IsUrl(String Url)
    {
      return Regex.IsMatch(Url, @"((https?|ftp|gopher|telnet|file|notes|ms-help):((//)|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*)");
    }
Abgelegt unter URL, Web, Validierung.

3 Kommentare zum Snippet

stef schrieb am 2/23/2016:
cooles snippet.
wieso aber werden folgende als gültig betrachtet??:

http://ww.web.de
http://wwwweb.de

und warum sind diese ungültig???:

HTTPS://www.web.de
www.Web.de
HTTP://www.irgendwas.com
Dirk Klimke schrieb am 2/23/2016:
Hallo stef,

ja da hast du sicherlich Recht. Allerdings suchte ich damals vermutlich nur eine schnelle Implementierung um einen URI zu validieren. Keine Internetadresse mit www. Heute würde ich Uri.IsWellFormedUriString (... (ich meine so heißt sie heute) verwenden. Wenn man einen RFC konformen Ausdruck haben möchte müsste man etwas mehr Gehirnschmalz investieren denke ich. Case Insensitivity über die RegexOptions.IgnoreCase (oder so) oder (?i) oder /ig... Ich denke dieses Snippet ist aufgrund der vorhandenen Implementierung in der Uri Klasse obsolet.
Koopakiller schrieb am 2/23/2016:
Aus irgend einem Grund wurde mein Kommentar verschluckt...was ich in etwa schon mal geschrieben habe:

Die im Snippet zu sehenden Protokolle sind sicherlich noch mit die gebräuchlichsten, aber bei weitem nicht vollständig. Auch kann man selbst Protokolle festlegen, was eine viel allgemeinere Lösung nötig macht. Daher ist Dirks Verweis auf Uri.IsWellFormedUriString vollkommen richtig.

Was deine ersten 2 Beispiele angeht @stef, warum sollten das keine gültigen URLs sein? ww ist einfach eine Subdomain von web.de und wwwweb.de ist einfach die komplette Domain. Da gibt es keinen Fehler.
 

Logge dich ein, um hier zu kommentieren!