Идея рекомендации, данной вам использовать регулярное выражение, состоит в том, чтобы на самом деле протестировать event.key
вместо event.keyCode
. Вам не нужно проверять нажатую клавишу клавиатуры, а просто проверять, какое значение вы собираетесь добавить в свою строку. Это лучше, потому что это не зависит от клавиатуры пользователя.
Вот наивный способ сделать это:
if (['0', '1', '2', '3', '5', '6', '7', '8', '9'].includes(e.key)) {
console.log('I am a number');
}
Регулярные выражения более сложны, но позволяют писать это более сжатая форма:
if (e.key.match(/[0-9]/)) {
console.log('I am a number');
}
Регулярное выражение, которое у вас есть, допускает не только числа. Его можно использовать для проверки правильности данного выражения, например, 1 * 2 / -3
. Это regex101
может помочь вам понять это немного больше.