Регулярное выражение – это шаблон, который обработчик регулярных выражений пытается сопоставить с введенным текстом. Шаблон состоит из односимвольных или многосимвольных литералов, операторов или конструкций. Данная технология изначально появилась в среде 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
0.00 (0%) 0 votes







