Si ya estás haciendo una comprobación con las condiciones, ¿por qué evalúas el dato ingresado con una expresión regular? Además, si 
e es la variable que representa al objeto del evento, trabaja con ella directamente:    
Código Javascript
:
Ver originalvar keynum = window.event ? e.keyCode : e.which;
  
Por cierto, debería de haber un caso 'si no' para cuando no se cumpla la condición. Un 
else return false; sería suficiente. 
Saludos