Compruebe si Sring es un número en JavaScript

Hiten Kanwar 12 octubre 2023
  1. Use la función isNaN() para comprobar si una cadena dada es un número o no en JavaScript
  2. Utiliza el operador + para comprobar si una cadena dada es un número o no en JavaScript
  3. Utiliza la función parseInt() para comprobar si una cadena dada es un número o no en JavaScript
  4. Utiliza la función Number() para comprobar si una cadena dada es un número o no en JavaScript
  5. Utiliza las expresiones regulares para comprobar si una cadena dada es un número o no en JavaScript
Compruebe si Sring es un número en JavaScript

El número en el lenguaje de programación es el tipo de dato que denota enteros, flotantes, etc. Las cadenas representan todos los caracteres en lugar de solo valores numéricos. Las cadenas pueden contener valores numéricos.

En este artículo, vamos a comprobar si una cadena dada es un número o no.

Use la función isNaN() para comprobar si una cadena dada es un número o no en JavaScript

La función isNaN() significa no es un número. Es una función incorporada de JavaScript utilizada para determinar si un valor dado no es un valor numérico, lo cual incluye tanto números reales como cadenas numéricas.

La función isNaN() devuelve true si el valor no es un número y false si es un número o se puede convertir en un número válido.

Aquí está la sintaxis básica de la función isNaN():

isNaN(value)
  • valor: El valor que deseas comprobar si es un número. Puede ser una variable, constante o una expresión.

Ejemplo:

console.log(isNaN('195'))
console.log(isNaN('boo'))
console.log(isNaN('100px'))

Resultado:

false 
true
true

Si queremos crear una función que devuelva true para un valor válido, siempre podemos hacerlo creando una función que niegue la salida de la función isNaN().

function isNum(val) {
  return !isNaN(val)
}
console.log(isNum('aaa'));
console.log(isNum('13579'));
console.log(isNum('-13'));

Resultado:

false
true
true

Ahora esta función llamada esNumero() devolverá true para un valor numérico válido.

Manejo de cadenas numéricas con decimales

La función isNaN() es versátil y también puede manejar cadenas numéricas con puntos decimales. Por ejemplo:

const cadena = '3.14';  // La cadena que queremos comprobar
const esNumerico = isNaN(cadena);

if (esNumerico) {
  console.log(`${cadena} NO es un número.`);
} else {
  console.log(`${cadena} es un número.`);
}

La salida identificará correctamente '3.14' como un número:

3.14 is a number.

Utiliza el operador + para comprobar si una cadena dada es un número o no en JavaScript

El operador + en JavaScript tiene un doble propósito: puede ser utilizado para la adición aritmética y como operador unario para la coerción de tipos.

Cuando se aplica a cadenas, el operador + intenta convertirlas en valores numéricos. Si la cadena se puede convertir con éxito en un número, el resultado será un valor numérico válido; de lo contrario, resultará en NaN (No es un número).

Por ejemplo:

console.log(+'195')
console.log(+'boo')

Resultado:

195
NaN

Utiliza la función parseInt() para comprobar si una cadena dada es un número o no en JavaScript

El método parseInt() en JavaScript se utiliza para analizar una cadena y convertirla en un número entero (un número entero). Lee la cadena de izquierda a derecha hasta que encuentre un carácter que no sea una parte válida de un número entero y luego deja de analizar.

Aquí está la sintaxis básica para utilizar parseInt():

parseInt(string[, radix]);
  • cadena: La cadena que se va a analizar y convertir en un número entero.
  • base (opcional): Un número entero entre 2 y 36 que representa la base del sistema numérico utilizado en la cadena. Este parámetro es opcional y, si se omite, JavaScript asume la base 10 (decimal).

Devuelve NaN cuando no puede extraer números de la cadena.

Por ejemplo:

console.log(parseInt('195'))
console.log(parseInt('boo'))

Resultado:

195
NaN

Manejo de cadenas numéricas con base

El método parseInt() también te permite especificar la base (base) del sistema numérico utilizado en la cadena. Por ejemplo, puedes analizar números binarios (base 2), octales (base 8) o hexadecimales (base 16).

Aquí hay un ejemplo de análisis de una cadena hexadecimal:

const cadenaHex = '1A';                       // Cadena hexadecimal
const valorEntero = parseInt(cadenaHex, 16);  // Especifica la base 16

if (isNaN(valorEntero)) {
  console.log(`${cadenaHex} NO es un número.`);
} else {
  console.log(`${cadenaHex} es un número.`);
}

En este caso, la salida identificará correctamente '1A' como un número hexadecimal:

1A is a number.

Utiliza la función Number() para comprobar si una cadena dada es un número o no en JavaScript

La función Number() convierte el argumento en un número que representa el valor del objeto. Si no puede convertir el valor en un número, devuelve NaN.

Podemos utilizarlo también con cadenas para comprobar si una cadena dada es un número o no.

Por ejemplo,

console.log(Number('195'))
console.log(Number('boo'))

Resultado:

195
NaN

Utiliza las expresiones regulares para comprobar si una cadena dada es un número o no en JavaScript

Una expresión regular, a menudo conocida como regex, es un patrón que especifica un conjunto de cadenas. Se puede utilizar para la coincidencia de patrones dentro de cadenas, lo que lo convierte en una herramienta versátil para tareas como la validación de cadenas.

En JavaScript, puedes crear expresiones regulares utilizando tanto el constructor RegExp como la notación literal de regex entre barras, como /patrón/.

Podemos usar estos patrones para verificar si una cadena contiene un número o no.

Primero, necesitamos definir un patrón de expresión regular que coincida con valores numéricos. Podemos crear un patrón sencillo que coincida con enteros positivos y negativos, así como números de punto flotante:

const numberPattern = /^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/;

Esto es lo que hace este patrón:

  • ^: Asegura el comienzo de la cadena.
  • [-+]?: Coincide con un signo positivo o negativo opcional.
  • [0-9]*: Coincide con cero o más dígitos antes del punto decimal.
  • \.?: Coincide con un punto decimal opcional.
  • [0-9]+: Coincide con uno o más dígitos después del punto decimal.
  • ([eE][-+]?[0-9]+)?: Coincide con una parte exponencial opcional, como e-3 o E+4.

Ahora, aplica el método test() del patrón de expresión regular a la cadena. El método test() devuelve true si la cadena coincide con el patrón y false en caso contrario:

const isNumber = numberPattern.test(str);

Por ejemplo,

function isNumeric(val) {
  return /^-?\d+$/.test(val);
}

console.log(isNumeric('aaa'));
console.log(isNumeric('13579'));
console.log(isNumeric('-13'));

Salida:

false
true
true

Artículo relacionado - JavaScript String