RegEx не работает, потому что возвращаемое значение является числом , а не строкой . Он работает «как ожидалось», когда вы принудительно возвращаете значение в строковый формат:
var valid = /^\d*\.?\d*$/.test(String(value));
Возможно, вы захотите прочитать . Как получить исходное значение & lt; input type = & quot; number & quot; & GT; поле? , поскольку он предполагает, что вы не имеете для проверки входа type=number
.