Section courante

A propos

Section administrative du site

La validation des courriels est un des problèmes les plus complexe à mettre en oeuvre lorsqu'on envoie un formulaire. Et pour cause, il faut tenir compte des règles suivantes:

A l'aide du code source RemObjects Chrome suivant, vous trouverez la réponse que vous souhaitez:

NameSpace Email;

INTERFACE

Uses 
 System.Text;

type
  Prog = class
    class method BooleanToString(Email:Boolean):String;
    class method IsEmail(Const Email:String):Boolean;
    class method Main(Args: array of String);
  end;

IMPLEMENTATION

class method Prog.Main(Args: array of String);
begin
 Console.WriteLine('Courriel «abc» est valide: '+BooleanToString(IsEmail('abc')));
 Console.WriteLine('Courriel «@» est valide: '+BooleanToString(IsEmail('@')));
 Console.WriteLine('Courriel «@abc.abc» est valide: '+BooleanToString(IsEmail('@abc.abc')));
 Console.WriteLine('Courriel «abc@gladir.com» est valide: '+BooleanToString(IsEmail('abc@gladir.com')));
 Console.WriteLine('Courriel «abc@@gladir.com» est valide: '+BooleanToString(IsEmail('abc@@gladir.com')));
 Console.WriteLine('Courriel «abc@gl][adir.com» est valide: '+BooleanToString(IsEmail('abc@gl][adir.com')));
end;

class method Prog.BooleanToString(Email:Boolean):String;Begin
 If(Email)Then Result:='True'
          Else Result:='False';
End;

class method Prog.IsEmail(Const Email:String):Boolean;
Var
 I,ArobasFound,AfterArobas:Integer;
Begin
 If(Email = '')or(Length(Email)=0)Then Begin
  Result:=False;
  Exit;
 End;
 For I:=0 To Length(Email)-1 do Begin
  Case Email[I] of
     #9,#10,#13,' ','(',')',':',',',
     '/','''','"','~','`','!','#','$','%','^','&','*','+','=','[',
     ']','{','}','|','\','?','<','>':Begin
      Result:=False;
      Exit;
     End;
  End;
 End;
 ArobasFound := 0;
 FOR I:=1 to Length(Email)-1 do Begin
  If Email[I] = '@'Then Begin
   Inc(ArobasFound);
   If ArobasFound = 1 Then AfterArobas:=I;
  End;
 End;
 If ArobasFound <> 1Then Begin
  Result:=False;
  Exit;
 End;
 Inc(AfterArobas,2);
 While (AfterArobas < Length(Email)-1) and (Email[AfterArobas] <> '.') do Inc(AfterArobas);
 Result:=Not((AfterArobas >= Length(Email) - 2) OR (Email[AfterArobas] <> '.'));
End;

END.

on obtiendra le résultat suivant:

Courriel «abc» est valide: false
Courriel «@» est valide: false
Courriel «@abc.abc» est valide: false
Courriel «abc@gladir.com» est valide: true
Courriel «abc@@gladir.com» est valide: false
Courriel «abc@gl][adir.com» est valide: false


Dernière mise à jour : Dimanche, le 17 février 2008