Is it possible to filter the keyboard-input of the numberfield?

By default I can type: +++123---456+++789... etc. I would like to prevent the user from typing incorrect values.
I tried to use onChange, but this is not called when the user types an incorrect value like above.
I also tried the inputMask, but it is not possible (to my knowledge) to set a regex like /^[-+]?\s*\d+(\.\d*)?$/
I also used the regex-property but this is only used for validation.

The most ideal situation would be to use some regex function to filter the key-input of the user. Any idea?