ho questo controllo per un form ,e ho problemi con il controllo della mail, non è obbligatoria ma se inserita vorrei controllarla, se inserisco una mail errata mi avverte ma se dopo inserisco una giusta mi continua dire che è sbagliata, dov'è l'errore?

grazie

Codice PHP:
function controllo(azione) {
     
// Variabili associate ai campi del modulo
     
var nome document.form1.nome.value;
     var 
cognome document.form1.cognome.value;
     var 
telefono document.form1.telefono.value;
     var 
email document.form1.email.value;
     var 
via document.form1.via.value;
     var 
cap document.form1.cap.value;
     var 
citta document.form1.citta.value;
     var 
checkEmail = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;

        if ((
nome == "") || (nome == "undefined")) {
           
alert("Il campo Nome è obbligatorio.");
           return 
false;
        }
        else if ((
cognome == "") || (cognome == "undefined")) {
           
alert("Il campo cognome è obbligatorio.");
           return 
false;
        }
        else if ((
telefono == "") || (telefono == "undefined")) {
           
alert("Il campo telefono è obbligatorio.");
           return 
false;
        }
        else if ((
email != "")) {
           if(!
checkEmail.testemail )){
             
alert("Non hai inserito un indirizzo email corretto.");
             return 
false;
           }
        }
        else if ((
via == "") || (via == "undefined")) {
           
alert("Il campo via è obbligatorio.");
           return 
false;
        }
        else if ((
cap == "") || (cap == "undefined")) {
           
alert("Il campo codice postale è obbligatorio.");
           return 
false;
        }
        else if ((
citta == "") || (citta == "undefined")) {
           
alert("Il campo citta è obbligatorio.");
           return 
false;
        }
        else {
           
document.form1.action azione;
           
document.form1.submit();
        }
  }