Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как проверить, что строка — число

Короткий ответ

Преобразуйте строку через 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 — Читает дробное число из начала строки.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.