a mi me funciona sin hacerle ningun cambio a tu expresion, mira el siguiente ejemplo.
Código:
alert("[email protected]".match(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/)[0]);
como ya comente, la clase
\w incluye mayuscula. para ser mas exacto, la clase se compone de los caracteres (el guion significando un rango)
a-zA-Z0-9_
o sea, caracteres alfanumericos en mayuscula y minuscula, y el guion bajo.