Проверка правильности E-mail адреса
Материал из DRKB
Если пользователю Вашего приложения необходимо вводить почтовый адрес, то возникает потребность в проверке адреса на правильность. Конечно способов сделать это существует множество, но этот, на мой взгляд, самый короткий и доступный для понимания.
Совместимость: Delphi 3.x (или выше)
function IsValidEmail(const Value: string): Boolean;
function CheckAllowed(const s: string): Boolean;
var
i: Integer;
begin
Result := False;
for i := 1 to Length(s) do
begin
{ недопустимый символ в s - значит недопустимый адрес }
if not (s[i] in ['a'..'z', 'A'..'Z', '0'..'9', '_', '-', '.']) then
Exit;
end;
Result := True;
end;
var
i: Integer;
namePart, serverPart: string;
begin
// начало выполнения IsValidEmail
Result := False;
i := Pos('@', Value);
if i = 0 then
Exit;
namePart := Copy(Value, 1, i - 1);
serverPart := Copy(Value, i + 1, Length(Value));
// @ не указано имя или сервер не указаны; минимально для сервера. "a.com"
if (Length(namePart) = 0) or ((Length(serverPart) < 1)) then
Exit;
i := Pos('.', serverPart);
// должно иметь точку и как минимум два знака от конца
if (i = 0) or (i > (Length(serverPart) - 1)) then
Exit;
Result := CheckAllowed(namePart) and CheckAllowed(serverPart);
end;
Author: Udo Nesshoever
Source: http://forum.sources.ru
ID: 03407