Entrada destacada

miércoles, 5 de agosto de 2020

Expresiones regulares [1] General

¿Alguna vez has escuchado expresión regular o regex?, si no has escuchado ninguna de las dos, este es tu día de suerte, en realidad no tanto, pero sí lo escucharás un poco por aquí.
Resulta que en mi trabajo necesitaba validar que un número de serie tuviera ciertas características mamalonas para pudiera dejar pasar al siguiente proceso, así que estuve considerando todos los puntos:
  1. Todas las letras de la serie deben ser mayúsculas.
  2. No puede haber espacios ni caracteres especiales, únicamente números hexadecimales (Es decir del 0 al 9 y de la A a la F).
  3. Todos los números de serie contienen 10 dígitos y ninguno puede comenzar con la letra F o el 0, yo no puse las reglas.
Bueno, al final no son tantas reglas como pensé, pero bueno, así fue mi pequeña situación en el trabajo, comencé a hacer las validaciones poniendo condiciones y lo primero que hice fue, tomar el dato que entraba (obviamente se debe enviar un número de serie), y puse un ToUpper() y listo, ya con eso solucioné la primera regla, ¡PERFECTO!

Pero la cosa no acabó ahí, ahora debía validar la segunda, pero como se me hizo ligeramente más complicada me salté a la tercera y puse unas condiciones if que me ayudaran a validar que el primer caracter, es decir, la primera posición (valor[0]) en la cadena leída; no fuera un CERO o una EFE, facilito también, pero a la hora de la verdad, estuve pensando muy tonta y estúpidamente que debía hacer un ciclo que comprobara cada uno de los 10 caracteres, no había problema, lo hacía y ya, pero luego de recordar mis días de universidad me di cuenta de que había una manera más sencilla y nada tardada de hacer eso.
An introduction to regular expressions – O'Reilly

Las Regex

O expresiones regulares, como les quieran llamar, son lo mismo, pero en programación así se les conoce más comúnmente, perfecto, ahora que recordé que con eso puedo hacer más sencillo el proceso, ¿ahora cómo carajo la implemento?, nada que StackOverflow no tenga.

Utilicé esta página: https://regex101.com
En ella puedes validar si tu expresión regular está correcta y las cadenas que permite, ahora solo falta el programita perrón que les mostrará lo que hice. Por cierto, la expresión regular que "diseñé" fue esta:

^([1-9A-E])([0-9A-F]{9})$

Pueden ignorar el primero y el último signo (^ y $), el símbolo de potencia (gorrito) representa el inicio de una expresión regular y el símbolo de dinero representa el final, no es necesario, simplemente es para marcar límites en caso de cualquier cosa.