A ver que les parece esta otra
aproximación
Código Delphi
[-]
function ValidEMail(EMail: String): Boolean;
var
Parts: TStrings;
Usuario, Servidor: String;
I: Integer;
begin
Result := false;
EMail := Trim(EMail);
if Pos(' ', EMail) <> 0 then
exit;
Parts := TStringList.Create;
try
Parts.Delimiter := '@';
Parts.DelimitedText := EMail;
if Parts.Count <> 2 then
exit;
Usuario := Parts[0];
Servidor := Parts[1];
if (Usuario = '') or (Servidor = '') then
exit;
Parts.Delimiter := '.';
Parts.DelimitedText := Servidor;
if Parts.Count < 2 then
exit;
for I := 0 to Pred(Parts.Count) do
if Parts[i] = '' then
exit;
Result := true;
finally
Parts.Free;
end;
end;
Como digo, es sólo una aproximación así que no pretende hacer más que esto:
1. Determinar que existe una y sólo una @
2. Que hay algo antes (usuario) y después (servidor) de esa @
3. Que después de la @ hay por lo menos dos partes separadas por puntos
4. Que ninguna de esas partes está vacía.
Esto es, se permiten cosas como
[email protected]
pero no
usuario@servidor
@servidor.com
usuario@@servidor.com
[email protected]
etc.
No valido el punto en la parte de usuario porque, al menos yo, tengo direcciones de correo de la forma
[email protected]
Bye