Istnieją metody Uri.IsWellFormedUriString
i Uri.TryCreate
, ale wydaje się, że wracają true
do ścieżek plików itp.
Jak sprawdzić, czy ciąg znaków jest poprawnym (niekoniecznie aktywnym) adresem URL HTTP do celów sprawdzania poprawności danych wejściowych?
Odpowiedzi:
Wypróbuj to, aby sprawdzić poprawność adresów URL HTTP (
uriName
jest to URI, który chcesz przetestować):Lub jeśli chcesz zaakceptować zarówno adresy URL HTTP, jak i HTTPS jako prawidłowe (na komentarz J0e3gan):
źródło
bool result = Uri.TryCreate(uriName, UriKind.Absolute, out uriResult) && uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps;
Ta metoda działa dobrze zarówno w http, jak i https. Tylko jedna linia :)
MSDN: IsWellFormedUriString
źródło
file://
lubldap://
. To rozwiązanie powinno być połączone z kontrolą względem schematu - np.if (uri.Scheme != Uri.UriSchemeHttp && uri.Scheme != Uri.UriSchemeHttps) ...
Stosowanie:
AKTUALIZACJA: (pojedynczy wiersz kodu) Dzięki @GoClimbColorado
Stosowanie:
źródło
Uri.TryCreate(source, UriKind.Absolute, out Uri uriResult) && uriResult.Scheme == Uri.UriSchemeHttps
Wszyscy tutaj odpowiedzi zezwolić URL z innymi systemami (np
file://
,ftp://
) lub odrzucić URL czytelny dla człowieka, które nie zaczynają sięhttp://
lubhttps://
(na przykładwww.google.com
), co nie jest dobre, gdy do czynienia z wejściami użytkownika .Oto jak to robię:
Stosowanie:
Wynik:
źródło
http://mooooooooo
, że w rzeczywistości jest to prawidłowy Uri. Dlatego nie możesz sprawdzićUri.IsWellFormedUriString
po wstawieniu „http: //”, a jeśli zaznaczysz to wcześniej, wszystko, co nie ma,Scheme
zostanie odrzucone. Może to, co można zrobić, to sprawdzamys.Contains('.')
zamiast tego.IsWellFormedUriString
przed dodaniemhttp://
, ostatecznie odrzucisz takie rzeczy,google.com
a jeśli użyjesz go po dodaniuhttp://
, to nadal zwróci wartość truehttp://mooooooooo
. Dlatego zasugerowałem sprawdzenie, czy ciąg zawiera.
zamiast niego.Po
Uri.TryCreate
możesz sprawdzić,Uri.Scheme
czy to HTTP (s).źródło
Spróbuj tego:
Przyjmie następujący adres URL:
źródło
Zwróci bool:
źródło
Oto
url
ciąg, który musisz przetestować.źródło
źródło