Il existe les méthodes Uri.IsWellFormedUriString
et Uri.TryCreate
, mais elles semblent revenir true
pour les chemins de fichiers, etc.
Comment vérifier si une chaîne est une URL HTTP valide (pas nécessairement active) à des fins de validation d'entrée?
Réponses:
Essayez ceci pour valider les URL HTTP (
uriName
est l'URI que vous souhaitez tester):Ou, si vous souhaitez accepter les URL HTTP et HTTPS comme valides (selon le commentaire de J0e3gan):
la source
bool result = Uri.TryCreate(uriName, UriKind.Absolute, out uriResult) && uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps;
Cette méthode fonctionne bien à la fois dans http et https. Une seule ligne :)
MSDN: IsWellFormedUriString
la source
file://
ouldap://
. Cette solution doit être couplée avec une vérification par rapport au schéma - par exempleif (uri.Scheme != Uri.UriSchemeHttp && uri.Scheme != Uri.UriSchemeHttps) ...
Usage:
MISE À JOUR: (une seule ligne de code) Merci @GoClimbColorado
Usage:
la source
Uri.TryCreate(source, UriKind.Absolute, out Uri uriResult) && uriResult.Scheme == Uri.UriSchemeHttps
Toutes les réponses ici permettent soit des URL avec d' autres systèmes (par exemple
file://
,ftp://
) ou rejeter des URL lisibles par l' homme qui ne commencent pashttp://
ouhttps://
(par exemplewww.google.com
) qui est pas bon lorsqu'il s'agit d'entrées utilisateur .Voici comment je le fais:
Usage:
Production:
la source
http://mooooooooo
s'agit en fait d'un Uri valide. Par conséquent, vous ne pouvez pas vérifierUri.IsWellFormedUriString
après avoir inséré "http: //" et si vous le vérifiez avant, tout ce qui n'a pas deScheme
sera rejeté. Peut-être que ce qui peut être fait est de vérifier à las.Contains('.')
place.IsWellFormedUriString
avant d'ajouter lehttp://
, vous finirez par rejeter des choses commegoogle.com
et si vous l'utilisez après avoir ajouté lehttp://
, il restera vraihttp://mooooooooo
. C'est pourquoi j'ai suggéré de vérifier si la chaîne contient.
plutôt un .Après,
Uri.TryCreate
vous pouvez vérifierUri.Scheme
si c'est HTTP (s).la source
Essayez ça:
Il acceptera une URL comme celle-ci:
la source
Cela retournerait bool:
la source
Voici
url
la chaîne que vous devez tester.la source
la source