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 || splitted2[1].length 5)
        return 
false;
        
    return 
true;