Javascript regex para validar nomes de arquivos

Eu tenho um regexp para validar nomes de arquivos. Aqui está:

/[0-9a-zA-Z\^\&\'\@\{\}\[\]\,\$\=\!\-\#\(\)\.\%\+\~\_ ]+$/

Deve permitir nomes de arquivos como este:

aaa
aaa.ext
a#
A9#.ext

Os seguintes caracteres não são permitidos\ / : * ? \" < > |

O problema é que nomes de arquivos como*.txt&nbsp;ou/\kk&nbsp;passa a validação. Eu estou fazendo validação com o evento de chave. Então, quando eu coloco um caractere extra depois de não ser permitido, ele mostra que tudo está correto.