Non so se è completo (ammetto che non so granché di RegExp), ma non accetta anche roba del tipo @.it?
io farei una funzione più lunga, ma più funzionale:
Codice PHP:
function checkEmail(str)
{
var splitted = str.split('@');
//Se vi è più di un @ non è valido
if(splitted.length != 2)
return false;
//Se la parte di SX è minore di 1 non è valido
if(splitted[0].length < 1)
return false;
//Non mi ricordo se ci va '\.' qui...
var splitted2 = splitted[1].split('.');
//Se tra l'@ ed il . non ci sono caratteri non è valido
if(splitted2[0].length < 1)
return false;
//Dopo il punto ci devono essere tra i 2 ed i 5 caratteri (mi sembra 5 non 4), sennò non è valido
if(splitted2[1].length < 2 || splitted2[1].length > 5)
return false;
return true;
}