Originariamente inviato da Friko85
Ciao cosi ad occhio è perchè tiene conto del sottogruppo non della sequanza se metti -- dovrebbe darti false..

cosa vuoi fare? magari si può migliorare..
Non vorrei sbagliarmi ma forse ho risolto, provala anche tu

Codice PHP:
new RegExp("^([A-Za-z0-9](([A-Za-z0-9]*[.]?[A-Za-z0-9]+))*([-]?[A-Za-z0-9]+)?(([A-Za-z0-9]*[.]?[A-Za-z0-9]+))*@([A-Za-z0-9]+(\.[a-z]{2,6})))$"); 
1. accetta il punto molte volte ma non consecutive e non all'inizio o alla fine
2. accetta il trattino una sola volta, non vicino al punto e non all'inizio o alla fine
3. un solo carattere iniziale