Returns true if a number or string value is a finite number.
npx @tessl/cli install tessl/npm-is-number@7.0.0Returns true if a number or string value is a finite number. Useful for regex matches, parsing, user input, etc.
npm install is-numberconst isNumber = require('is-number');const isNumber = require('is-number');
console.log(isNumber(5e3)); // true
console.log(isNumber('10')); // true
console.log(isNumber('')); // false
console.log(isNumber([])); // false
console.log(isNumber(NaN)); // false
console.log(isNumber(Infinity)); // falseReturns true if the value is a finite number (including string representations of numbers), false otherwise.
/**
* Returns true if a number or string value is a finite number
* @param {any} num - The value to test
* @returns {boolean} - true if value is a finite number, false otherwise
*/
module.exports = function isNumber(num);Returns true for:
0, 1, 1.1, 10, 100, -100, 0xff, 5e3'0', '1', '1.1', '10.10', '0xff', '5e3', '012'Math.PI, Math.E, Math.LN2, Number.MAX_VALUE, Number.MIN_VALUEMath.abs(1), Math.cos(1), Math.pow(1, 2), etc.parseInt('012'), parseFloat('012')' 56\r\n '+'', +[], +false, +true, +null (these are numbers when passed)Returns false for:
Infinity, -InfinityNaN'', ' ', '\r\n\t''abc', '3a', 'foo', 'null', 'true', 'false'[], [1], [1, 2, 3]{}, { a: 1 }function() {}, Math.sinnull, undefined, true, falsenew Date()/foo/typeof check for number primitives first for performanceNumber.isFinite when available, falls back to isFinite for older environmentsconst isNumber = require('is-number');
// Numeric values
console.log(isNumber(42)); // true
console.log(isNumber(-17.5)); // true
console.log(isNumber(0xff)); // true (hexadecimal)
console.log(isNumber(5e3)); // true (scientific notation)
// String representations
console.log(isNumber('42')); // true
console.log(isNumber('-17.5')); // true
console.log(isNumber('0xff')); // true
console.log(isNumber('5e3')); // true
console.log(isNumber('012')); // true (treated as decimal, not octal)
// Edge cases that return false
console.log(isNumber('')); // false (empty string)
console.log(isNumber(' ')); // false (whitespace only)
console.log(isNumber('abc')); // false (non-numeric)
console.log(isNumber('3a')); // false (mixed alphanumeric)
console.log(isNumber([])); // false (empty array)
console.log(isNumber({})); // false (empty object)
console.log(isNumber(null)); // false
console.log(isNumber(undefined)); // false
console.log(isNumber(NaN)); // false
console.log(isNumber(Infinity)); // false
console.log(isNumber(-Infinity)); // false
// Parsed values
console.log(isNumber(parseInt('12', 10))); // true
console.log(isNumber(parseFloat('12.34'))); // true
// Important distinction: pre-converted vs original values
console.log(isNumber(+'')); // true (+ converts to 0, which is a number)
console.log(isNumber('')); // false (empty string)
console.log(isNumber(+[])); // true (+ converts to 0, which is a number)
console.log(isNumber([])); // false (array)
console.log(isNumber(+null)); // true (+ converts to 0, which is a number)
console.log(isNumber(null)); // false (null)
// Whitespace handling
console.log(isNumber(' 42 ')); // true (leading/trailing whitespace OK)
console.log(isNumber('4\n2')); // false (internal whitespace/newlines)