Hoy voy a mostrarte una función de JavaScript para saber si una cadena o carácter es un dígito, es decir, un número del 0 al 9. Para ello vamos a usar el código ASCII y la función charCodeAt
.
Al final tendremos una función que nos permitirá saber si un carácter de JavaScript es un dígito, la cual funciona del lado del cliente y del servidor.
Voy a basarme en el funcionamiento de isalpha del buen C.
Función que dice si es un dígito en JavaScript
La función recibe una cadena. Obtiene el código ASCII y devuelve un booleano (true
o false
) indicando si la cadena es un dígito. Cabe mencionar que si la cadena tiene más de un carácter, solo el primero será tomado en cuenta.
/**
* Saber si carácter es dígito con JavaScript
*
* https://parzibyte.me/blog
*
*/
const esDigito = (caracter) => {
let ascii = caracter.charCodeAt(0);
return ascii > 47 && ascii < 58;
}
Si el código ASCII va desde el 48 hasta el 57 entonces es un dígito del 0 al 9. Recuerda que estamos usando funciones flecha.
Probar función que dice si string es dígito en JS
Ahora veamos unas pruebas de esta función. Defino un arreglo de caracteres y por cada uno pruebo a la función:
/**
* Saber si carácter es dígito con JavaScript
*
* https://parzibyte.me/blog
*
*/
const esDigito = (caracter) => {
let ascii = caracter.charCodeAt(0);
return ascii > 47 && ascii < 58;
}
// Probar
const caracteres = ["A","B","0","4","_","9", " "];
caracteres.forEach(caracter => {
console.log("¿'%s' es dígito? %s", caracter, esDigito(caracter));
});
/*
Salida:
¿'A' es dígito? false
¿'B' es dígito? false
¿'0' es dígito? true
¿'4' es dígito? true
¿'_' es dígito? false
¿'9' es dígito? true
¿' ' es dígito? false
*/
Como ves, la salida es correcta y el algoritmo cumple con su función. Por cierto, como lo dije al inicio, esta función trabaja en el lado del cliente y del lado del servidor con Node.
También te invito a ver más sobre JavaScript en mi blog.