Справочник по C#

    Исходники по языку программирования CSharp

    Проверка IP адреса на валидность: Справочник по C#

    /
    /
    /
    80 Views


          Не все программы возвращают строку, содержащую текст соответствующий формату Ip адреса или возникает необходимость проверки введенных данных пользователем. Рассмотрим пример проверки введенных или полученных данных на соответствие формату ip адреса, с использованием регулярных выражений.
          Регулярное выражение – это шаблон, который обработчик регулярных выражений пытается сопоставить с введенным текстом. Шаблон состоит из односимвольных или многосимвольных литералов, операторов или конструкций. Данная технология изначально появилась в среде UNIX и обычно используется в языке программирования Perl. Разработчики из Microsoft перенесли ее в Windows, где до недавнего времени эта технология применялась в основном со сценарными языками. Регулярные выражения поддерживаются множеством классов .NET из пространства имен System.Text.RegularExpressions.

          Создайте проект Windows Form в Microsoft Visual Studio и добавьте два компонента на главную форму.
    • Timer – для мгновенной проверки введенных данных;
    • TextBox – текстовое поле для ввода данных.

          Перейдите в свойства компонента «timer1», сделав по нему клик правой клавишей мыши и выбрав из появившегося контекстного меню, пункт «Свойства». Выставьте свойство «Enabled» в значение «true», данный параметр разрешает запуск таймера, сразу после загрузки главной формы вашего приложения. Сделайте двойной клик по компоненту «timer1», вы перейдете в автоматически созданный метод «timer1_Tick». Добавьте в него приведенный ниже код вызова метода проверки введенных данных на соответствие формату ip адреса. Данный код при вводе текста в текстовое поле будет передавать введенный текст в метод «IsIpAddress», который вернет «true» если текст соответствует регулярному выражению и установит зеленый цвет вводимого текста или красный, в случае если метод вернет «false».

    if (IsIpAddress(textBox1.Text))
    {
    textBox1.ForeColor = Color.Green;
    }
    else
    {
    textBox1.ForeColor = Color.Red;
    }

          Далее необходимо добавить сам метод проверки. В данном методе инициализируется новый экземпляр класса System.Text.RegularExpressions.Regex с указанием регулярного выражения «b(?:d{1,3}.){3}d{1,3}b».
          Регулярное выражение можно разделить на три части. Первая часть «b(?:d{1,3}.)» – выполняет проверку, является текст числом с точкой и длиной от одного до трех символов. Вторая часть {3}, указывает, что будет выполняться поиск вхождения строки в формате, три числа с точкой и длиной от одного до трех символов. И последняя часть «d{1,3}b», указывает, что в конце будет присутствовать чисто, длиной от одного до трех символов. Для проверки введенного текста используется функция «IsMatch», которая выполняет проверку обнаружено ли в указанной входной строке соответствие регулярному выражению, заданному в конструкторе System.Text.RegularExpressions.Regex. Если да то возвращается «true», если нет, то «false». Добавьте приведенный ниже метод в код главной формы.

    static bool IsIpAddress(string Address)
    {
    //Инициализируем новый экземпляр класса System.Text.RegularExpressions.Regex
    //для указанного регулярного выражения.
    System.Text.RegularExpressions.Regex IpMatch =
    new System.Text.RegularExpressions.Regex(@"b(?:d{1,3}.){3}d{1,3}b");
    //Выполняем проверку обнаружено ли в указанной входной строке
    //соответствие регулярному выражению, заданному в
    //конструкторе System.Text.RegularExpressions.Regex.
    //если да то возвращаем true, если нет то false
    return IpMatch.IsMatch(Address);
    }

          Запустите ваш проект нажав на клавиатуре, клавишу «F5». Введите любой ip адрес в текстовое поле, если вы ввели все правильно, цвет текста будет установлен зеленый, иначе красный. Если у вас имеется текст, содержащий ip адрес, но имеющий лишние символы. Например:

    • Ip_192.168.1.1
    • 192.168.1.1_123
    • dcef192.168.1.1abc

          Вы так же можете воспользоваться регулярным выражением. Ниже приведен метод выполняющий поиск всех ip адресов в тексте и возвращающий их вам в нормальном виде.

    static string IpAddress(string Address)
    {
    string ip = string.Empty;
    string pattern = @"dd?d?.dd?d?.dd?d?.dd?d?";
    System.Text.RegularExpressions.Regex regex =
    new System.Text.RegularExpressions.Regex(pattern);
    System.Text.RegularExpressions.Match match = regex.Match(Address);
    while (match.Success)
    {
    ip = match.Value;
    match = match.NextMatch();
    }
    return ip;
    }

    Ссылка для скачивания примера: Rusfolder.net

    Проверка IP адреса на валидность: Справочник по C#

    0.00 (0%) 0 votes

    moyadcode13
    • Facebook
    • Twitter
    • Google+
    • Linkedin
    • Pinterest
    moyadcode10
    moyadcode11
    moyadcode9