Una expresión regular es una secuencia de caracteres en la que podemos realizar una comparación para tratar de localizar si sigue algún tipo de patrón en dicha secuencia de caracteres. Se puede tratar de localizar un patrón en un texto que detecte si existe un número de teléfono, un correo electrónico, un dni, etc. Una vez localizado, se puede extraer el contenido encontrado o bien puedes usar una expresión regular para tratar de validar el contenido.
Pongámonos un ejemplo. Si queremos localizar un año de 4 cifras (por ejemplo 2021) en un texto, el patrón a buscar sería obviamente “2021”. Pero en caso de que no sepamos exactamente qué fecha localizar (por ejemplo 1999, 2000, 2001, etc) la búsqueda se complica.
Por lo que sabemos, se trata de 4 digitos numéricos. Ya tenemos un patrón, 4 números y la forma de localizarla mediante una expresión regular sería algo como \d\d\d\d
¿Que significa \d\d\d\d?
- El carácter \ es un carácter especial que indica que se debe procesar el siguiente carácter (en este caso, d)
- El carácter d indica que es un dígito, siempre y cuando vaya precedido del carácter especial \
Por tanto para realizar una búsqueda de 4 dígitos numéricos en una cadena de caracteres podriamos localizarla perfectamente con la expresión regular \d\d\d\d.
Otra manera de encontrar el mismo patrón seria usando otro carácter especial de cuantificación {}. Dado que \d se repite 4 veces, podriamos realizar la misma solicitud con \d{4}
Ahora, localicemos un número de móvil. La expresión regular no difiere mucho a la anterior. Suponiendo que un número de móvil tiene 9 digitos, la expresión sería \d{9}.
¿Pero que ocurre si el número es expresado de la siguiente manera “111 22 33 44”?
La fórmula anterior no podría ahora encontrar el patrón \d{9} al contener espacios entre los números. Para encontrar el patrón ahora sabemos que puede ir un carácter numérico o un espacio.
Solución: (\d| ){8,12}
Hemos usado dos caracteres especiales nuevos () (paréntesis) y | (tecla AltGr y 1 a la vez)
Con los paréntesis hemos realizado un grupo, como en matemáticas para agrupar operaciones (3+2)x(2-1), pero en este caso de caracteres y con | hemos utilizado un operando de OR . En este caso estamos buscando \d o un espacio que se repita entre 9 y 12 veces. El buscar ahora 12 dígitos radica en que ahora la busqueda es algo mayor en el caso de incluir espacios en mayor o menor medida.
Localicemos ahora un correo electrónico. Sabemos que debe contener caracteres alfanuméricos, una @ arroba, más caracteres alfanuméricos, un . punto y más caracteres alfanuméricos que nos indican el dominio (en torno 2 a 5 caracteres)
Nuestro patrón a localizar ahora sería algo parecido a esto: (\w+|[0-9])+@((\w+|[0-9]).(\w|[0-9]){2,5})
En este patrón no se contempla caracteres especiales del tipo _-.+ y es que no existe un patrón perfecto, aunque realizando una busqueda en internet podemos encontrar expresiones regulares que intentan perfeccionarlo.
El significado de \w+ es de cualquier carácter alfabético y en corchetes [0-9] indicamos cualquier número, con lo que así limitamos a caracteres alfanumericos.
Todo ello seguido de @, otra secuencia alfanumérica seguida de . y de 2 a 5 caracteres alfanuméricos.