Есть в Uri.IsWellFormedUriString
и Uri.TryCreate
методы, но они , кажется , чтобы вернуться true
на пути к файлам и т.д.
Как проверить, является ли строка действительным (не обязательно активным) HTTP-URL для проверки входных данных?
Есть в Uri.IsWellFormedUriString
и Uri.TryCreate
методы, но они , кажется , чтобы вернуться true
на пути к файлам и т.д.
Как проверить, является ли строка действительным (не обязательно активным) HTTP-URL для проверки входных данных?
Ответы:
Попробуйте это проверить HTTP-URL (
uriName
это URI, который вы хотите проверить):Или, если вы хотите принять действительные URL-адреса HTTP и HTTPS (согласно комментарию J0e3gan):
источник
bool result = Uri.TryCreate(uriName, UriKind.Absolute, out uriResult) && uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps;
Этот метод отлично работает как в http и https. Всего одна строчка :)
MSDN: IsWellFormedUriString
источник
file://
илиldap://
это решение должно быть соединено с чеком против схемы -. Напримерif (uri.Scheme != Uri.UriSchemeHttp && uri.Scheme != Uri.UriSchemeHttps) ...
Использование:
ОБНОВЛЕНИЕ: (одна строка кода) Спасибо @GoClimbColorado
Использование:
источник
Uri.TryCreate(source, UriKind.Absolute, out Uri uriResult) && uriResult.Scheme == Uri.UriSchemeHttps
Все ответы здесь либо разрешить URL - адрес с другими схемами (например,
file://
,ftp://
) или отклонить удобочитаемых URL , которые не начинаются сhttp://
илиhttps://
(например,www.google.com
) , которые не очень хорошо при работе с вводимым пользователем .Вот как я это делаю:
Использование:
Вывод:
источник
http://mooooooooo
, что на самом деле это действительный Uri. Таким образом, вы не можете проверитьUri.IsWellFormedUriString
после вставки «http: //», и если вы проверяете его раньше, все, что не имеет,Scheme
будет отклонено. Может быть, то, что можно сделать, это проверитьs.Contains('.')
вместо этого.IsWellFormedUriString
перед добавлениемhttp://
, вы в конечном итоге отвергаете такие вещи, как,google.com
и если вы используете его после добавленияhttp://
, он все равно будет возвращать true дляhttp://mooooooooo
. Вот почему я предложил проверить, содержит ли строка.
вместо этого.После
Uri.TryCreate
вы можете проверить,Uri.Scheme
если это HTTP (s).источник
Попробуй это:
Он примет URL так:
источник
Это вернуло бы bool:
источник
Вот
url
строка, которую вы должны проверить.источник
источник