Silver Lightning Ответов: 3

Как проверить URL-адрес, если он действителен или недействителен, если запись похожа на эту в C#


Как проверить URL-адрес, если он действителен или недействителен, если запись выглядит следующим образом:

www.com - должно быть недействительным
http://ww.try.net - должно быть недействительным
http://winner.com - должно быть действительным
url = null = должен быть недействительным



Ниже приведен метод, который я сделал, который не подтверждает вышеприведенный сценарий.

Заранее благодарю вас за вашу любезную помощь

Что я уже пробовал:



<pre> public bool IsUrlValid(string webUrl)
        {
            if (webUrl == null) return false;
            return Regex.IsMatch(webUrl, @"(http|https)://(([www\.])?|([\da-z-\.]+))\.([a-z\.]{2,3})$");
        }

Maciej Los

А что не так с вашим шаблоном регулярных выражений?

3 Ответов

Рейтинг:
1

Patrice T

Само собой, 'http://ww.try.net-это действительный url-адрес.
"www" - это только самое распространенное значение, используемое в этом месте, но любое значение разрешено, включая отсутствие значения.


Silver Lightning

спасибо, сэр, но не могли бы вы дать мне обновленный код регулярного выражения, чтобы установить http://ww.try.net - чтобы стать инвалидом?

Рейтинг:
1

Singh Deepika

попробовать это:-

образец string = @"/\б(HTTP или HTTPS)\:\/\/(сайт www\.)?[а-я]+\.[а-Z]{2,3}\b/г";
// Создайте экземпляр объекта регулярного выражения.
Regex r = новое регулярное выражение (pattern, RegexOptions.Параметром ignorecase);

// Сопоставьте шаблон регулярного выражения с текстовой строкой.
var m = r. Match(webUrl);


Silver Lightning

Спасибо Сингх
Это всегда приводит к недопустимому URL-адресу, даже если входной URL-адрес является допустимым:

пример допустимого URL-адреса:
http://www.bigwinnerme.com

Не могли бы Вы уточнить подробнее?

Singh Deepika

регулярное выражение соответствует входной строке "http://www.bigwinnerme.com". Оформите заказ в regexstorm.

Какой чек вы подаете? Если строка не будет совпадать, она вернет Null. Кроме того, вы можете проверить свое регулярное выражение здесь : http://regexstorm.net/tester

Рейтинг:
0

Maciej Los

Независимо от шаблона регулярных выражений, есть встроенная функция: Ури.Метод IsWellFormedUriString (String, UriKind) (System)[^]

Пример:

List<string> uris = new List<string>(){"www.com", "http://ww.try.net", "http://winner.com", "url = null"};

var result = uris.Select(x=> new {Uri = x, IsValid = Uri.IsWellFormedUriString(x, UriKind.Absolute)});

foreach(var u in result)
{
	Console.WriteLine("'{0}' is{1}valid", u.Uri, u.IsValid ? " ":" NOT ");
}

Результат:
'www.com' is NOT valid
'http://ww.try.net' is valid
'http://winner.com' is valid
'url = null' is NOT valid


В случае, если вы хотите использовать регулярное выражение вместо этого, вы можете использовать это: ^http(s)?://([\w-]+.)+[\w-]+(/[\w- ./?%&=])?$


Peter Leow

Это удобно, 5ed!

Maciej Los

- Спасибо, Питер.

Silver Lightning

- Спасибо, сэр. но
'http://ww.try.net' является недействительным (требование)

потому что Ву. должно быть, www.
как я могу настроить регулярное выражение, чтобы проверить, что приведенный выше URL-адрес недействителен?

F-ES Sitecore

ww.try.net это допустимый URL-адрес. Как вы можете придумать регулярное выражение, которое читает мысли людей и знает, что кто-то имел в виду "www", а не "ww"? Если вы придумываете свои собственные произвольные правила, которые говорят, что такое допустимый URL-адрес, то вам нужно будет придумать регулярное выражение, которое удовлетворяет этим правилам. Мы не знаем, что *вы * считаете допустимым URL-адресом, только то, что стандарты говорят, что это допустимый url-адрес. ww.try.net это допустимый URL-адрес.

Silver Lightning

- Спасибо, сэр. как насчет такой URL-ссылки?
https://www.com
Как я могу сделать это недействительным, когда пользователь вводит URL-адрес, как в приведенном выше случае?