No me gustan las expresiones regulares. Nunca me han gustado...pero son útiles, así que no queda más remedio que aceptarlas. Hoy he llegado a strfriend.com, que viene siendo un sitio donde puedes obtener una representación visual para una expresión regular.
Parece obvio que se entiende más rápido esta representación:
que esta otra:
^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$
No he investigado mucho, asi que no se si funciona en todos los navegadores (me huele que no, la imagen es un SVG) ni con todo tipo de expresiones, pero asi a priori parece interesante.