Validare una mail secondo uno schema predefinito

Forse questo post sarà banale ma non tutti conoscono e sanno usare le regular expression.
In questi giorni mi sono trovato ad avere una lista di indirizzi mail da convalidare secondo uno schema ben preciso, ho risolto il problema usando il seguente metodo:

   1:  public bool Convalida (string indirizzo)
   2:  {
   3:    string schema =
   4:   @"^[-a-zA-Z][.a-zA-Z0-9]*@(studenti.unina|)*\.(it)$";
   5:              
   6:   Regex controllo = new Regex(schema, 
RegexOptions.IgnorePatternWhitespace);
   7:   
   8:   bool booleano = false;
   9:   
  10:   if (string.IsNullOrEmpty(indirizzo))
  11:    booleano = false;
  12:   else
  13:    booleano = controllo.IsMatch(indirizzo);
  14:   
  15:   return booleano;
  16:  }
Technorati Tag: ,

posted @ lunedì 1 dicembre 2008 12.55

Print

Comments on this entry:

# re: Validare una mail secondo uno schema predefinito

Left by Luca Del Tongo at 01/12/2008 13.52
Gravatar
Ciao Fabrizio, hai risolto il problema nel modo non corretto, la regex che usi infatti è errata....
prova ad usare un indirizzo del tipo
fab.lapiello@nanananana.it
e vedrai che ti restituisce true!!!! Quello che è sbagliato è questa parte
[-(studenti)+(.unina)+]*
qui stai dicendo di matchare un carattere presente tra quelli dentro le parentesi un numero che va da zero a infinite volte...
ciao ciao, Luca

# re: Validare una mail secondo uno schema predefinito

Left by fremsoft at 02/12/2008 9.26
Gravatar
Io su www.fremsoft.it controllo le email andando a verificare direttamente l'esistenza del dominio tramite una interrogazione al DNS, si fa molto prima ed è molto più affidabile:



// codice php
function check_email($str)
{
if( (preg_match('/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/', $str)) ||
(preg_match('/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/',$str)) )
{
$host = explode('@', $str);
if(checkdnsrr($host[1].'.', 'MX') ) return true;
if(checkdnsrr($host[1].'.', 'A') ) return true;
if(checkdnsrr($host[1].'.', 'CNAME') ) return true;
}

return false;
}

# re: Validare una mail secondo uno schema predefinito

Left by fabrizio.lapiello@hotmail.it at 03/12/2008 11.38
Gravatar
@Luca: ciao, mi ero già accorto dell'errore e l'avevo corretto solo che WLW ha dato problemi e nn ha aggiornato il post, cmq adesso è corretto...

@fremsoft: grazie per il feed!

Your comment:



 (will not be displayed)


 
 
 
Please add 1 and 5 and type the answer here:
 

Live Comment Preview: