То, что вы ищете, это Uri.IsWellFormedUriString
.Следующий код возвращает true:
Uri.IsWellFormedUriString("google.com", UriKind.RelativeOrAbsolute)
Если для UriKind установлено значение Absolute, возвращается false:
Uri.IsWellFormedUriString("google.com", UriKind.Absolute)
EDIT: См. здесь для перечисления UriKind.
- RelativeOrAbsolute: тип Uri является неопределенным.
- Абсолют: Ури - это абсолютный Ури.
- Относительный: Uri является относительным Uri.
Из Документация MSDN :
Абсолютные URI характеризуются полнымссылка на ресурс (пример: http://www.contoso.com/index.html),, тогда как относительный Uri зависит от ранее определенного базового URI (пример: /index.html).
Также см. здесь для Uri.IsWellFormedUriString
. Этот метод работает в соответствии с RFC 2396 и RFC 2732.
Если вы посмотрите на RFC 2396 , вы увидите, что google.com не является действительнымURI. На самом деле www.google.com не является ни тем, ни другим, но в разделе F. Сокращенные URL-адреса эта ситуация подробно объясняется следующим образом:
Синтаксис URL-адреса разработандля однозначной ссылки на сетевые ресурсы и расширяемости с помощью схемы URL, однако, поскольку идентификация и использование URL стали обычным явлением, традиционные средства массовой информации (телевидение, радио, газеты, рекламные щиты и т. д.) все чаще используют сокращенные ссылки на URL.состоящийтолько часть полномочий и пути идентифицированного ресурса, такого как www.w3.org/Addressing/ или просто имя хоста DNS самостоятельно.Такие ссылки в первую очередь предназначены для человеческой интерпретации, а не для машины, при условии, что контекстная эвристика достаточна для завершения URL-адреса (например, большинство имен хостов, начинающихся с «www», вероятно, имеют префикс URL-адреса «http://")., хотяне является стандартным набором эвристик для устранения неоднозначности сокращенных ссылок URL, многие клиентские реализации позволяют вводить их пользователю и разрешать эвристически. Следует отметить, что такая эвристика может изменяться со временем, особенно когда вводятся новые схемы URL.URL имеет тот же синтаксис, что и относительный путь URL, сокращенные ссылки URL не могут использоваться в контекстах, где ожидаются относительные URL.Это ограничивает использование сокращенных URL-адресов местами, где нет определенного базового URL, например диалоговыми окнами и автономными
Насколько я понимаю, Uri.IsWellFormedUriString
принимает строки в форме www.abc.com в качестве действительных URI. Но google.com не принимаетявляется абсолютным URI, тогда как он принимается как относительный URI, поскольку он соответствует спецификации относительного пути (пути могут содержать.).
Кроме того, в качестве примечания, если вы хотите использовать регулярное выражение для анализа URI,Вы можете прочитать B.Разбор ссылки на URI с помощью регулярного выражения .