Как проверить, что строка — число
Короткий ответ
Преобразуйте строку через Number() и проверьте результат через Number.isFinite(). Пустую строку проверьте отдельно, потому что Number('') равно 0:
const isNumeric = (value) => value.trim() !== '' && Number.isFinite(Number(value));
console.log(isNumeric('42'));
console.log(isNumeric('-3.5'));
console.log(isNumeric('12px'));
console.log(isNumeric(''));Результат:
true
true
false
falseТолько цифры
Для количества, PIN-кода или идентификатора проверьте, что строка состоит только из цифр:
const isDigits = (value) => /^\d+$/.test(value);
console.log(isDigits('0042'));
console.log(isDigits('4.2'));Результат:
true
falseДиапазон
После проверки формата проверьте границы:
const isValidAge = (value) => {
const age = Number(value);
return Number.isInteger(age) && age >= 0 && age <= 130;
};
console.log(isValidAge('35'), isValidAge('200'), isValidAge('3.5'));Результат:
true false falseЧастая ошибка
parseFloat() читает число с начала строки и отбрасывает остальное, поэтому пропускает строки, которые числами не являются:
console.log(parseFloat('12px'), Number('12px'));Результат:
12 NaNФункции из этого ответа
- Number() — Превращает значение в число.
- Number.isFinite — Проверяет, что значение — конечное число (не NaN и не Infinity).
- parseFloat — Читает дробное число из начала строки.