Per la vecchia versione di Delphi che non ha Espressione regolare:
function TForm1.IsValidEmail(email: string): boolean;
const
charslist = ['_', '-', '.', '0'..'9', 'A'..'Z', 'a'..'z'];
var
Arobasc, lastpoint : boolean;
i, n : integer;
c : char;
begin
n := Length(email);
i := 1;
Arobasc := false;
lastpoint := false;
result := true;
while (i <= n) do begin
c := email[i];
if c = '@' then
begin
if Arobasc then // Only 1 Arobasc
begin
result := false;
exit;
end;
Arobasc := true;
end
else if (c = '.') and Arobasc then // at least 1 . after arobasc
begin
lastpoint := true;
end
else if not(c in charslist) then // valid chars
begin
result := false;
exit;
end;
inc(i);
end;
if not(lastpoint) or (email[n] = '.')then // not finish by . and have a . after arobasc
result := false;
end;
Per chi piace usare RegExpression utilizzando il server di database
function TForm1.IsValidEmail(const AMail: string): Boolean;
var
lQry: TSQLQuery;
begin
// no REGEXP in Delphi 2009 -> use of REGEPX Oracle
lQry := TSQLQuery.Create();
lQry.SQLConnection := SQLConnection1;
try
vQry.SQL.Text := 'SELECT REGEXP_SUBSTR(' + QuotedStr(aMail) + ', ''^[a-zA-Z0-9._%+-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{1,}$'') "EMAIL" FROM DUAL'; // ORACLE
// vQry.SQL.Text := 'SELECT ' + QuotedStr(aMail) + ' REGEXP ''^[a-zA-Z0-9][a-zA-Z0-9.-]*[a-zA-Z0-9.-]@[a-zA-Z0-9][a-zA-Z0-9._-]*[a-zA-Z0-9]\.[a-zA-Z]{2,4}$''; // MySQL
lQry.Open;
Result := not lQry.Eof and (lQry.FieldByName('EMAIL').AsString = AMail);
finally
FreeAndNil(lQry);
end;
end;
http: //www.howtodothings. com/computers/a1169-validating-email-addresses-in-delphi.html – Marko
Per quello che vale, la prossima versione di Delphi avrà una libreria regex incorporata nella RTL, ed è in uscita in pochi giorni. –
La convalida degli indirizzi e-mail è uno dei buoni esempi di w qui usare le espressioni regolari potrebbe non essere un'idea brillante - http://stackoverflow.com/questions/36261/test-expand-my-email-regex/36277#36277 – mjn