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.


Estoy disponible para trabajar en tu proyecto o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.
Si el post fue de tu agrado muestra tu apoyo compartiéndolo, suscribiéndote al blog, siguiéndome o realizando una donación.

Suscribir por correo

Ingresa tu correo y recibirás mis últimas entradas sobre programación, open source, bases de datos y todo lo relacionado con informática

Únete a otros 7,452 suscriptores

parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

2 Comentarios

JOSE ANTONIO PERRI · marzo 30, 2019 a las 7:39 pm

Muchas gracias me ha resultado muy útil esta información.
Saludos
Jose

Explicando la conversión hexadecimal a decimal manualmente usando JavaScript - Parzibyte's blog · noviembre 10, 2018 a las 11:23 am

[…] lo dije en otro post, hice una pequeña app que te explica cómo convertir un número hexadecimal a decimal. No es como […]

Deja un comentario

Marcador de posición del avatar

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

A %d blogueros les gusta esto: