Исходя из предоставленного вами кода, похоже, что вы тестируете строку по одному символу за раз.
Код, который вам нужен, проверяет, что введены правильные буквы, но в целом конечная строка, созданная из нажатий клавиш, может быть не в том формате, который вы ожидаете.
Например, строка 123.123.321.m
- все допустимые символы, но последняя строка недопустима.
Как правило, вам нужно добавить проверку, которая проверяет введенную последнюю строку.
Такое регулярное выражение может помочь вам в проверке окончательного ввода строки.
numcheck = /^[0-9]*\.?[0-9]+[gkmnu]?$/
Это регулярное выражение говорит
- опционально соответствует 0-9
- далее, необязательно, соответствует точке
- следующий, сопоставить хотя бы одно число
- конец строки может заканчиваться одним символом из набора