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 :
- Un courriel doit contenir exactement un arobas (@),
- Le nom de domaine, situé après l'arobas (@) contient un point (.),
- Seul certains code de caractères sont acceptés.
A l'aide du code source Ada suivant, vous trouverez la réponse que vous souhaitez :
- WITH TEXT_IO;
-
- PROCEDURE Email IS
-
- USE TEXT_IO;
-
- FUNCTION BooleanToStr(X:IN Boolean) RETURN String IS BEGIN
- IF(X)THEN
- RETURN "true";
- ELSE
- RETURN "false";
- END IF;
- END BooleanToStr;
-
- FUNCTION IsEmail(Email:IN String) RETURN Boolean IS
- ArobasFound, AfterArobas : Integer;
- BEGIN
- IF((Email = "") OR (Email'Length = 0)) THEN
- RETURN False;
- END IF;
- FOR I IN 1..Email'Length LOOP
- CASE Email(I) IS
- WHEN Character'Val(9) | Character'Val(10) | Character'Val(13) | ' ' | '(' | ')' | ':'| ',' |
- '/' | ''' | '"' | '~' | '`' | '!' | '#' | '$' | '%' | '^' | '&' | '*' | '+' | '=' | '[' |
- ']' | '{' | '}' | '|' | '\' | '?' | '<' | '>' =>
- RETURN False;
- WHEN OTHERS => ArobasFound := ArobasFound;
-
- END CASE;
- END LOOP;
- ArobasFound := 0;
- FOR I IN 2..Email'Length LOOP
- IF Email(I) = '@' THEN
- ArobasFound := ArobasFound + 1;
- IF ArobasFound = 1 THEN
- AfterArobas := I;
- END IF;
- END IF;
- END LOOP;
- IF ArobasFound /= 1 THEN
- RETURN False;
- END IF;
- AfterArobas := AfterArobas + 2;
- WHILE ((AfterArobas < Email'Length) AND (Email(AfterArobas) /= '.')) LOOP
- AfterArobas := AfterArobas + 1;
- END LOOP;
- IF((AfterArobas >= Email'Length - 1) OR (Email(AfterArobas) /= '.')) THEN
- RETURN False;
- ELSE
- RETURN True;
- END IF;
- END IsEmail;
-
- BEGIN
- PUT_LINE("Courriel «abc» est valide: " & BooleanToStr(IsEmail("abc")));
- PUT_LINE("Courriel «@» est valide: " & BooleanToStr(IsEmail("@")));
- PUT_LINE("Courriel «@abc.abc» est valide: " & BooleanToStr(IsEmail("@abc.abc")));
- PUT_LINE("Courriel «abc@gladir.com» est valide: " & BooleanToStr(IsEmail("abc@gladir.com")));
- PUT_LINE("Courriel «abc@@gladir.com» est valide: " & BooleanToStr(IsEmail("abc@@gladir.com")));
- PUT_LINE("Courriel «abc@gl][adir.com» est valide: " & BooleanToStr(IsEmail("abc@gl][adir.com")));
- END Email;
on obtiendra le résultat suivant :
Courriel «abc» est valide: falseCourriel «@» 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 : Samedi, le 25 août 2012