Cómo verificar correctamente si una cadena es un número en JavaScript. Función IsNumeric()
¡Hola a todos! Escribo en JavaScript y me encontré con un problema típico: necesito verificar si el valor ingresado por el usuario es un número. Por ejemplo, hay un formulario donde el usuario ingresa el precio de un producto, y quiero asegurarme de que sea un número, no texto.
Probé usar isNaN(), pero se comporta de manera extraña. Por ejemplo:
console.log(isNaN('123')); // false — parece número
console.log(isNaN('12.3')); // false — también número
console.log(isNaN('')); // false — ¡la cadena vacía se considera número?!
console.log(isNaN(' ')); // false — ¿los espacios también son número?
console.log(isNaN('abc')); // true — esto es comprensible
console.log(isNaN(true)); // false — true=1, ¿esto es número?!
console.log(isNaN(null)); // false — null=0, ¿también número?!
Necesito que la función IsNumeric() devuelva true solo para números decimales normales (enteros y decimales con punto), y para cadenas vacías, espacios, valores booleanos, null, undefined y demás basura — false.
Además, me gustaría que se admitan números negativos.