Es gibt die Methoden Uri.IsWellFormedUriString
und Uri.TryCreate
, aber sie scheinen true
für Dateipfade usw. zurückzukehren.
Wie überprüfe ich, ob eine Zeichenfolge eine gültige (nicht unbedingt aktive) HTTP-URL für Zwecke der Eingabevalidierung ist?
Antworten:
Versuchen Sie dies, um HTTP-URLs
uriName
zu überprüfen ( ist der URI, den Sie testen möchten):Oder wenn Sie sowohl HTTP- als auch HTTPS-URLs als gültig akzeptieren möchten (gemäß J0e3gans Kommentar):
quelle
bool result = Uri.TryCreate(uriName, UriKind.Absolute, out uriResult) && uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps;
Diese Methode funktioniert sowohl in http als auch in https einwandfrei. Nur eine Zeile :)
MSDN: IsWellFormedUriString
quelle
file://
oderldap://
diese Lösung mit einer Prüfung gegen die Regelung gekoppelt werden soll - z. B.if (uri.Scheme != Uri.UriSchemeHttp && uri.Scheme != Uri.UriSchemeHttps) ...
Verwendung:
UPDATE: (einzelne Codezeile) Danke @GoClimbColorado
Verwendung:
quelle
Uri.TryCreate(source, UriKind.Absolute, out Uri uriResult) && uriResult.Scheme == Uri.UriSchemeHttps
Alle Antworten hier entweder die Möglichkeit , URLs mit anderen Systemen (zB
file://
,ftp://
) oder ablehnen Menschen lesbaren URLs , die mit nicht startenhttp://
oderhttps://
(zBwww.google.com
) , die nicht gut ist , wenn sie mit Benutzereingaben zu tun .So mache ich das:
Verwendung:
Ausgabe:
quelle
http://mooooooooo
es sich tatsächlich um einen gültigen Uri handelt. Daher können SieUri.IsWellFormedUriString
nach dem Einfügen von "http: //" nicht nachsehen, und wenn Sie vorher nachsehen, wird alles, was kein aScheme
hat, abgelehnt. Vielleicht können wirs.Contains('.')
stattdessen nachsehen.IsWellFormedUriString
vor dem Hinzufügen von verwendenhttp://
, Dinge wie ablehnengoogle.com
und wenn Sie es nach dem Hinzufügen von verwendenhttp://
, wird es immer noch true für zurückgebenhttp://mooooooooo
. Aus diesem Grund habe ich vorgeschlagen, zu überprüfen, ob die Zeichenfolge.
stattdessen eine enthält .Danach können
Uri.TryCreate
Sie überprüfenUri.Scheme
, ob es sich um HTTP (s) handelt.quelle
Versuch das:
Es akzeptiert URL wie folgt:
quelle
Dies würde bool zurückgeben:
quelle
Hier
url
ist die Zeichenfolge, die Sie testen müssen.quelle
quelle