Existem os métodos Uri.IsWellFormedUriString
e Uri.TryCreate
, mas eles parecem retornar true
para caminhos de arquivo etc.
Como verifico se uma sequência de caracteres é um URL HTTP válido (não necessariamente ativo) para fins de validação de entrada?
Respostas:
Tente isso para validar URLs HTTP (
uriName
é o URI que você deseja testar):Ou, se você deseja aceitar os URLs HTTP e HTTPS como válidos (pelo comentário de J0e3gan):
fonte
bool result = Uri.TryCreate(uriName, UriKind.Absolute, out uriResult) && uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps;
Este método funciona bem em http e https. Apenas uma linha :)
MSDN: IsWellFormedUriString
fonte
file://
ouldap://
Esta solução deve ser acoplado com um controlo contra o esquema -. Por exemploif (uri.Scheme != Uri.UriSchemeHttp && uri.Scheme != Uri.UriSchemeHttps) ...
Uso:
UPDATE: (única linha de código) Obrigado @GoClimbColorado
Uso:
fonte
Uri.TryCreate(source, UriKind.Absolute, out Uri uriResult) && uriResult.Scheme == Uri.UriSchemeHttps
Todas as respostas aqui também permitir que URLs com outros sistemas (por exemplo,
file://
,ftp://
) ou rejeitar URLs legíveis que não começam comhttp://
ouhttps://
(por exemplo,www.google.com
) que não é bom quando se lida com entradas do usuário .Aqui está como eu faço:
Uso:
Resultado:
fonte
http://mooooooooo
é, de fato, um Uri válido. Portanto, você não pode procurarUri.IsWellFormedUriString
depois de inserir "http: //" e, se já tiver verificado antes, tudo o que não tiver umScheme
será rejeitado. Talvez o que se possa fazer seja procurarmoss.Contains('.')
.IsWellFormedUriString
antes de adicionar ohttp://
, acabará rejeitando coisas comogoogle.com
e se você usá-lo após adicionar ohttp://
, ele ainda retornará verdadeiro parahttp://mooooooooo
. É por isso que sugeri verificar se a string contém um.
.Depois
Uri.TryCreate
você pode verificarUri.Scheme
para ver se HTTP (s).fonte
Tente isso:
Ele aceitará URL assim:
fonte
Isso retornaria bool:
fonte
Aqui
url
está a string que você deve testar.fonte
fonte