Вы можете использовать регулярное выражение:
var regex = /^\d+(?:\.\d{0,2})$/;
var numStr = "123.20";
if (regex.test(numStr))
alert("Number is valid");
Если вы не хотите быть настолько строгими с десятичными знаками, вам может быть проще использовать унарный оператор (+
) для приведения кчисло, чтобы проверить его действительность:
var numStr = "123.20";
var numNum = +numStr; // gives 123.20
Если числовая строка недействительна, она вернет NaN
(не число), что вы легко можете проверить:
var numStr = "ab123c";
var numNum = +numStr;
if (isNaN(numNum))
alert("numNum is not a number");
Это, конечно, позволит пользователю добавлять больше десятичных разрядов, но вы можете отключить любой дополнительный, используя number.toFixed(2)
, чтобы округлить до 2 десятичных разрядов.parseFloat
намного менее строг с вводом и вырвет первое найденное число из строки, если эта строка начинается с числа, например.parseFloat("123abc")
даст 123
.