Expresión regular para probar si un número es hexadecimal en JavaScript

Probar si una cadena es un número hexadecimal con JavaScript usando expresiones regulares

Actualmente estoy trabajando en una pequeñísima app que te dice cómo convertir manualmente un número hexadecimal a decimal.

Es decir, tú pones el número hexadecimal y la app lo convierte, pero te explica cómo hacerlo: pone todas las operaciones y cómo debes ir elevando el número, luego sumarlo y esas cosas que puede hacer un profesor (aunque la app no se cansa nunca).

Probar si es hexadecimal en JavaScript

Probar si es hexadecimal en JavaScript

Pero bueno, no vamos a desviarnos. Para que funcione más o menos bien se tiene que validar el número, y veremos cómo hacerlo con expresiones regulares.

La expresión regular

Sin más rodeos, la expresión es esta:

^[0-9A-F]+$

Voy a explicarla más o menos, aunque es muy sencilla. Primero vemos los delimitadores ^ y $, esos marcan respectivamente el inicio y fin de una cadena. Así le indicamos que no debe haber nada más, toda la expresión regular se debe cumplir de cabo a rabo dijeran por ahí.

Luego tenemos un mmm ¿rango? no sé cómo llamarlo, pero se representa con los corchetes. Y dice que puede tener números del 0 al 9, y de la A a la F.

Puede que haya alguien que diga que los números también pueden tener minúsculas, y tendrá razón. Pero eso de las mayúsculas y minúsculas lo arreglamos al probar la expresión regular, indicando que sea insensitivo; o convirtiendo todo a minúsculas.

Ah, finalmente usamos el signo de +. Ese símbolo quiere decir que lo que está antes de él debe estar 1 o más veces (infinitas si queremos). Así que en resumen…

Busca si una cadena está compuesta de 1 o más símbolos que van del 0 al 9 y de la A a la F.

Cómo implementarlo y ponerlo dentro de una función

Para no complicarnos, pondremos esto en una función que te regresa true o false indicando si el número es o no hexadecimal. El único argumento que acepta es una cadena, la cual representa el número.

La función se ve corta porque estamos usando funciones flecha. Si no sabes qué es const, mira esto.

En caso de que realmente no entiendas la función por la nueva sintaxis, el buen BabelJS nos ayuda y traduce a esto:

Explicando un poco ya el cuerpo de la función, nos topamos con que llamamos al método test de una expresión regular. Este método regresa un booleano y le pasamos una cadena.

Ahí se ve claramente que estamos indicando que no le debe importar si es mayúscula o minúscula con el modificador i.

Por otro lado, el modificador g es para que busque en toda la cadena y no se detenga en la primera coincidencia.

Para llamarla usamos:

let resultado = esHexadecimal("tu_numero_hexadecimal");

Y la variable resultado será true si lo es, false si no. Aquí una pequeña prueba:

La cual puedes ejecutar en este enlace.

Como es JavaScript al final de todo, se puede ejecutar en el navegador o sobre NodeJS.

Bonus: números hexadecimales

Tal vez llegaste aquí buscando cómo validar números hexadecimales; recordemos que estos números se componen de 6 caracteres, ni más ni menos (aunque creo que se pueden de 3 dígitos, pero validaremos hasta 6).

Entonces modificaríamos la expresión regular así:

^[0-9A-F]{6}$

En lugar del signo de + usamos a {6} que indica que forzosamente debe tener 6 de esos símbolos; ni más ni menos.

Expresión regular para probar si un número es hexadecimal en JavaScript

Por parzibyte Tiempo de lectura: 3 min
2