function MailURLMayBeInvalid(const s: string): Boolean;
var
i: Integer;
c: string;
begin// ' ', a, o, u, ?, [, ], (, ), : in EMail-Address
Result := (Trim(s) = '') or (Pos(' ', AnsiLowerCase(s)) > 0) or
(Pos('a', AnsiLowerCase(s)) > 0) or (Pos('o', AnsiLowerCase(s)) > 0) or
(Pos('u', AnsiLowerCase(s)) > 0) or (Pos('?', AnsiLowerCase(s)) > 0) or
(Pos('[', AnsiLowerCase(s)) > 0) or (Pos(']', AnsiLowerCase(s)) > 0) or
(Pos('(', AnsiLowerCase(s)) > 0) or (Pos(')', AnsiLowerCase(s)) > 0) or
(Pos(':', AnsiLowerCase(s)) > 0);
if Result then Exit; // @ not in EMail-Address;
i := Pos('@', s);
Result := (i = 0) or (i = 1) or (i = Length(s));
if Result then Exit;
Result := (Pos('@', Copy(s, i + 1, Length(s) - 1)) > 0);
if Result then Exit; // Domain <= 1
c := Copy(s, i + 1, Length(s));
Result := Length(c) <= 1;
if Result then Exit;
i := Pos('.', c);
Result := (i = 0) or (i = 1) or (i = Length(c));
end;
Функция MailURLMayBeInvalid в Delphi, которая проверяет, является ли заданная строка валидным адресом электронной почты. Функция принимает строковый параметр s и возвращает булевое значение, указывающее, является ли адрес электронной почты валидным или нет.
Преобразование функции:
Она сначала проверяет, является ли входная строка пустой (Trim(s) = '') или содержит любые из следующих символов: пробел, буквы 'a', 'o', 'u', вопросительный знак '?', квадратные скобки '[', ']'), круглые скобки '(', ')', двоеточие ':'. Если это так, функция сразу возвращает True, указывая, что адрес электронной почты вероятно недействителен.
Затем она проверяет, является ли символ '@' в строке более чем одним раз или находится он на самом начале или конце строки. Если это так, функция также возвращает True.
Далее она извлекает часть строки после символа '@' с помощью функции Copy и проверяет, имеет ли домен (то есть часть после '@') более одного символа. Если это так, функция возвращает False, указывая, что адрес электронной почты вероятно действителен.
Наконец, она проверяет, есть ли точка '.' в части домена строки. Если нет, или если точка находится на самом начале или конце части домена, функция возвращает True.
В целом, эта функция использует комбинацию простых манипуляций строк и поиска шаблонов для определения, является ли входная строка валидным адресом электронной почты.
Потенциальные улучшения:
Функция могла быть более robust, проверяя дополнительные недопустимые символы в адресе электронной почты, такие как специальные символы <, >, (, ), и т.д.
Вместо использования простого поиска шаблонов можно использовать регулярные выражения для валидации адреса электронной почты. Это сделало бы функцию более гибкой и легче поддерживаемой.
Можно также рассмотреть реализацию более полного алгоритма валидации, учитывающего дополнительные правила для валидных адресов электронной почты, такие как требование к локальному частному имени (то есть части перед '@') быть разделенным от домена не менее чем одним символом.
Пример модификации функции с использованием регулярных выражений:
Этот регулярный выражение шаблон.matches большинство общепринятых форматов валидных адресов электронной почты. Обратите внимание, что это только один пример и может не покрывать все возможные валидные адреса электронной почты.
Функция MailURLMayBeInvalid на языке Delphi проверяет строку на правильность Email-адреса, выявляя ошибки в формате адреса и домене.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS