My sample to "check emailx syntax" using TRegEx - Regular Expressions class

[SHOWTOGROUPS=4,20]
[/SHOWTOGROUPS]

[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@provider.com;email@provider;email@provider.net;'; // 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]