уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Возможность работы с регулярными выражениями в Delphi «из коробки» впервые появилась в Delphi XE. Именно в этой версии в делфи работа с регулярными выражениями была организована с использованием библиотеки, входящей в официальную версию, что, безусловно, упростило жизнь delphi-разработчикам.

Основная информация по компоненту
Исходник официального примера и документация SourceForge DocWiki

Регулярные выражения — это строки поиска, в которых определенные символы (символы) имеют особое значение.
Демонстрационный пример показывает основы работы с регулярными выражениями в Delphi. На форме приложения расположены следующие элементы управления:

  • EditText: TEdit — поле ввода строки для проверки его на соответствие регулярному выражению;
  • Button1: TButton — кнопка для запуска проверки;
  • lbRegExp: TListBox — список выбора регулярного выражения;
  • MemoRegEx: TMemo — поле для показа выбранного регулярного выражения;

Внешний вид демонстрационного приложения представлен на рисунке ниже:

 

Демонстрационный пример

Используя этот демонстрационными пример Delphi мы можем с помощью регулярных выражений проверить: адрес электронной почты, IP-адрес и два вида интервала дат. Для проверки используется класс TRegEx и его классовая функция IsMatch.

Более подробную информацию по этому и другим классам Regular Expressions в Delphi вы можете узнать в этой статье.

Проверка строки на соответствие регулярному выражению происходит следующим образом:

procedure TForm1.Button1Click(Sender: TObject);
begin
  if TRegEx.IsMatch(EditText.Text, MemoRegEx.Lines.Text) then
    ShowMessage('Text DOES match the regular expression')
  else
    ShowMessage('Text DOES NOT match the regular expression');
end;

Выбор в списке TListBox очередного элементы приводит к тому, что в Memo выводится регулярное выражение:

procedure TForm1.lbRegExpClick(Sender: TObject);
begin
 
  case lbRegExp.ItemIndex of
    0:
      begin
        lbType.Caption := 'Email for validation';
        MemoRegEx.Lines.Text := '^((?>[a-zA-Z\d!#$%&''*+\-/=?^_`{|}~]+\x20*' +
          '|"((?=[\x01-\x7f])[^"\\]|\\[\x01-\x7f])*"\' +
          'x20*)*(?<angle>< ))?((?!\.)(?>\.?[a-zA-Z\d!' +
          '#$%&''*+\-/=?^_`{|}~]+)+|"((?=[\x01-\x7f])' +
          '[^"\\]|\\[\x01-\x7f])*")@(((?!-)[a-zA-Z\d\' +
          '-]+(?< !-)\.)+[a-zA-Z]{2,}|\[(((?(?<!\[)\.)' +
          '(25[0-5]|2[0-4]\d|[01]?\d?\d)){4}|[a-zA-Z\' +
          'd\-]*[a-zA-Z\d]:((?=[\x01-\x7f])[^\\\[\]]|' +
          '\\[\x01-\x7f])+)\])(?(angle)>)$';
      end;
    1:
      begin
        // Accept IP address between 0..255
        lbType.Caption := 'IP address for validation (0..255)';
        MemoRegEx.Lines.Text := '\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\' +
          '.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.' +
          '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.' +
          '(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b';
 
      end;
    2:
      begin
        // Data interval format mm-dd-yyyy
        lbType.Caption :=
          'Date in mm-dd-yyyy format from between 01-01-1900 and 12-31-2099';
        MemoRegEx.Lines.Text := '^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[' +
          '01])[- /.](19|20)\d\d$';
 
      end;
    3:
      begin
        // Data interval format mm-dd-yyyy
        lbType.Caption :=
          'Date in dd-mm-yyyy format from between 01-01-1900 and 31-12-2099';
        MemoRegEx.Lines.Text := '^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[01' +
          '2])[- /.](19|20)\d\d$';
 
      end;
  end;
end;</angle>

При подготовке статьи использовалась информация со следующих ресурсов:

  1. Официальный репозиторий демонстрационных примеров Delphi на SourceForge
  2. Информация по работе с регулярными выражениями в Delphi на сайте Embarcadero

уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.