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 Perl suivant, vous trouverez la réponse que vous souhaitez :
- #!/usr/bin/perl
-
- sub IsEmail($) {
- my($Email) = @_;
- my ($ArobasFound,$AfterArobas,$I);
- if(length($Email) == 0) {
- return FALSE;
- }
- for($I = 0; $I < length($Email); $I++) {
- if(substr($Email,$I,1) eq ' ') { return FALSE; }
- elsif(substr($Email,$I,1) eq '\t') { return FALSE; }
- elsif(substr($Email,$I,1) eq '\n') { return FALSE; }
- elsif(substr($Email,$I,1) eq '\r') { return FALSE; }
- elsif(substr($Email,$I,1) eq '(') { return FALSE; }
- elsif(substr($Email,$I,1) eq ')') { return FALSE; }
- elsif(substr($Email,$I,1) eq ':') { return FALSE; }
- elsif(substr($Email,$I,1) eq ',') { return FALSE; }
- elsif(substr($Email,$I,1) eq '/') { return FALSE; }
- elsif(substr($Email,$I,1) eq '\'') { return FALSE; }
- elsif(substr($Email,$I,1) eq '\"') { return FALSE; }
- elsif(substr($Email,$I,1) eq '~') { return FALSE; }
- elsif(substr($Email,$I,1) eq '`') { return FALSE; }
- elsif(substr($Email,$I,1) eq '!') { return FALSE; }
- elsif(substr($Email,$I,1) eq '#') { return FALSE; }
- elsif(substr($Email,$I,1) eq '$') { return FALSE; }
- elsif(substr($Email,$I,1) eq '%') { return FALSE; }
- elsif(substr($Email,$I,1) eq '^') { return FALSE; }
- elsif(substr($Email,$I,1) eq '&') { return FALSE; }
- elsif(substr($Email,$I,1) eq '*') { return FALSE; }
- elsif(substr($Email,$I,1) eq '+') { return FALSE; }
- elsif(substr($Email,$I,1) eq '=') { return FALSE; }
- elsif(substr($Email,$I,1) eq '[') { return FALSE; }
- elsif(substr($Email,$I,1) eq ']') { return FALSE; }
- elsif(substr($Email,$I,1) eq '{') { return FALSE; }
- elsif(substr($Email,$I,1) eq '}') { return FALSE; }
- elsif(substr($Email,$I,1) eq '|') { return FALSE; }
- elsif(substr($Email,$I,1) eq '\\') { return FALSE; }
- elsif(substr($Email,$I,1) eq '?') { return FALSE; }
- elsif(substr($Email,$I,1) eq '<') { return FALSE; }
- elsif(substr($Email,$I,1) eq '>') { return FALSE; }
- }
-
- for($ArobasFound = 0, $I = 1; $I < length($Email); $I++) {
- if(substr($Email,$I,1) eq '@') {
- $ArobasFound++;
- if($ArobasFound == 1) {
- $AfterArobas = $I;
- }
- }
- }
-
- if($ArobasFound != 1) {
- return FALSE;
- }
-
- $AfterArobas += 2;
- while (($AfterArobas < length($Email)) && (substr($Email,$AfterArobas,1) ne '.')) {
- $AfterArobas++;
- }
-
- if(($AfterArobas >= length($Email) - 1) || (substr($Email,$AfterArobas,1) ne '.')) {
- return FALSE;
- } else {
- return TRUE;
- }
- }
-
- print "Courriel «abc» est valide: ".&IsEmail("abc")."\n";
- print "Courriel «\@» est valide: ".&IsEmail("\@")."\n";
- print "Courriel «\@abc.abc» est valide: ".&IsEmail("\@abc.abc")."\n";
- print "Courriel «abc\@gladir.com» est valide: ".&IsEmail("abc\@gladir.com")."\n";
- print "Courriel «abc\@\@gladir.com» est valide: ".&IsEmail("abc\@\@gladir.com")."\n";
- print "Courriel «abc\@gl][adir.com» est valide: ".&IsEmail("abc\@gl][adir.com")."\n";
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 : Jeudi, le 17 janvier 2019