RAD Studio Checking email syntax using TRegEx - Regular Expressions class

emailx45

Местный
Регистрация
5 Май 2008
Сообщения
3,571
Реакции
2,438
Credits
573
My sample to "check emailx syntax" using TRegEx - Regular Expressions class
1588103527560.png


[SHOWTOGROUPS=4,20]
Код:
uses
  System.RegularExpressions;

function CheckEmailAdress(const EmailAddress: string): Boolean;
const
  EMAIL_REGEX = '^((?>[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)>)$';
begin
  Result := TRegEx.IsMatch(EmailAddress, EMAIL_REGEX);
end;

procedure TForm1.btnCheckEmailSyntaxClick(Sender: TObject);
var
  lEmailListArrayString: TArray<string>;
  lTextWithEmail       : string;
begin
  lEmailListArrayString := nil;
  //
  lTextWithEmail := '[email protected];email@provider;[email protected];'; // the "last" will be "blank"
  //
  Memo1.Lines.Clear;
  //
  lEmailListArrayString := lTextWithEmail.Split([';'], TStringSplitOptions.ExcludeEmpty);
  //
  Memo1.Lines.Add(StringOfChar('-', 40));
  Memo1.Lines.AddStrings(lEmailListArrayString);
  Memo1.Lines.Add('Emails counting = ' + Length(lEmailListArrayString).ToString);
  Memo1.Lines.Add(StringOfChar('-', 40));
  //
  lTextWithEmail := '';
  //
  for lTextWithEmail in lEmailListArrayString do
  begin
    if { (lTextWithEmail.Trim <> '') and } CheckEmailAdress(lTextWithEmail) then
      Memo1.Lines.Add('--> ' + lTextWithEmail + ', email syntax OK')
    else
      Memo1.Lines.Add('--> ' + lTextWithEmail + ', email syntax DONT OK');
  end;
end;

[/SHOWTOGROUPS]