Las expresiones regulares pueden parecer complejas al principio debido a la cantidad de caracteres que se utilizan, pero son una herramienta poderosa para procesar y validar cadenas de texto. Son patrones que permiten buscar y manipular texto de manera eficiente en diversas aplicaciones, desde verificación de contraseñas hasta validación de correos electrónicos. En este artículo, entenderemos los conceptos básicos de las expresiones regulares, proporcionando una base sólida para explorar conceptos más avanzados en el futuro.
¿Cómo se estructuran las expresiones regulares?
La estructura de una expresión regular suele comenzar con caracteres contenedores y patrones específicos. Un patrón básico se muestra entre dos barras inclinadas (/ /). Dentro de estas barras, se definen los elementos y condiciones a evaluar con símbolos y caracteres especiales.
Patrones básicos
Inicio y fin de expresión: Utilizamos un acento circunflejo (^) para indicar el inicio, y un símbolo de dólar ($) para señalar el final.
Rango de caracteres: Los corchetes [ ] se utilizan para agrupar caracteres de interés. Por ejemplo, [0-9] indica cualquier número del 0 al 9.
Condiciones de repetición: Las llaves { } son útiles para especificar cuántas veces se debe repetir el patrón. Por ejemplo, [0-9]{6,9} significa que la cadena debe tener de 6 a 9 números.
Ejemplo práctico en PHP
Implementaremos una expresión regular para validar contraseñas que solo contengan números y tengan una longitud específica.
preg_match(): Es una función de PHP que compara una expresión regular con una cadena.
'/^[0-9]{6,9}$/': La expresión regular busca cadenas que comiencen y terminen con números, con una longitud entre 6 y 9 caracteres.
¿Cómo se aplican las expresiones regulares en problemas reales?
Las expresiones regulares son extremadamente versátiles y se utilizan en una variedad de contextos:
Validación de contraseñas: Comprobar si cumplen con restricciones como longitud mínima, uso de caracteres especiales, etc.
Formato de emails y URL: Confirmar que las entradas sigan estructuras compatibles con estándares reconocidos.
Números de teléfono: Asegurar que los números cumplen con un formato específico (cantidad de dígitos, código de país, etc.).
Esta corta introducción te garantiza una comprensión básica para comenzar a utilizar expresiones regulares en tus proyectos, y podrás explorar recursos más avanzados para profundizar en su versatilidad. Además, en plataformas como Platzi, existe un curso completo de expresiones regulares que puedes explorar si deseas convertirte en un experto en esta tecnología. ¡Sigue aprendiendo y perfeccionando tus habilidades!
La explicación más sencilla que he visto, me ha quedado todo claro.
#EXPRESIONESREGULARES/*
/: CONTENEDOR
^: INICIO
$: FINAL
-: RANGO
[]: PATRÓN
{}: CONDICIÓN
*/$password ='12345';$password1 ='123456a';$password2 ='123456';//Iniciamos con un contenedo // luego iniciamos con ^ y que solo permita un patrón del 0 al 9 [0-9] //la condicion en llaves y que tenga como minimo 6 elementos y máximo 9 caracteres {6,9}echo preg_match('/^[0-9]{6,9}$/', $password);//Resultado 0echo "<br>";var_dump(preg_match('/^[0-9]{6,9}$/', $password1));//Resultado int(0)echo "<br>";var_dump((bool)preg_match('/^[0-9]{6,9}$/', $password2));//Resultado bool(true)
Gracias por el resumen
Gracias por el resumen.
Recuerdo que ami me costó mucho entender expresiones regulares, pero realmente no es nada del otro mundo, solo hay que practicarlas y repasarlas, igual existe muchas página online que te ayudan a evaluar las expresiones en tiempo real para cuando necesites programar alguna desde 0.
Como dato extra, los signos de "^ " y "$" no siempre van, creo que eso es algo equivocado en esta clase, esos ambos signos son opcionales, básicamente el signo "^" te dice que la cadena debe iniciar con tal patrón y después de ese patrón puede tener cualquier cosa extra, el signo "$" te dice que la cadena puede tener cualquier cosa extra, pero debe finalizar con el patrón escrito, cuando pones "^" y "$" estás diciendo que la cadena debe contener exactamente el patrón pasado, sirve cuando quieres evaluar cadenas exactas. Lo que si es cierto es que las expresiones regulares deben ir siempre entre diagonales "/"
Es verdad amigo, justo estaba pensando lo mismo. Tal vez el profesor lo quizo decir para evaluar patrones que tengan concidencias exactas de inicio a fin.
Pienso que no es posible explicar todo el contenido de expresiones regulares en una sola clase y el profesor lo que trató fue de dar una introducción a este tema, con un ejemplo sencillo de entender.
lo simplifico un monton, un groso el profe!
Exacto.
Expresiones regulares
/ → Es un contenedor. Este inicia y finaliza.
^ → Dentro del contenedor tenemos esta expresión que nos indica un inicio.
$ → Cuando finalicemos utilizamos esta exprseión.
'-' (rayita :) ) → Nos sirve para especificar rangos.
Hice este código que con ayuda de un bloque condicional dice si se acepta o no
`<?php
$password='123456';
/**
* Esta expresion regular
* exige caracteres
* desde el 0 al 9
* y que tenga una
* longuitud de 6
* a 9 caracteres
*/
$expreg='/^[0-9]{6,9}$/';
if (preg_match($expreg,$password)) {
echo 'La contraseña tiene un formato correcto';
} else{
echo 'La contraseña no tiene un formato correcto';
}`
Muy buena validación
Buen ejemplo, gracias.
🤔 Las expresiones regulares nos permiten describir patrones de texto.
Esto me da claridad de lo que se puede hacer.
Al fin pude comprender para que son ese tipo de caracteres :)
Sì, y me di cuenta que hay un curso de expresiones regulares ;)
@mayungo Es lo que veo, lo agrego a mi ruta :)
Las funciones CAST nos sirven para convertir de un tipo d edato a otro tipo. Ya ves que PHP al ser un poco más felxible que otros lenguajes para el, es lo mismo decir que una variable o resultado con el tipo de dato int con valor 1 es lo mismo que decir que es boolean o boolean. En el vídeo vemos como el profesor usa una conversión para pasar de int a bool el resultado que arroja la expresión regular.
Existen varias formas de conversión las cuales podrás encontrar en el enlace que dejo de la documentación oficial de PHP.
Como puedo escribir una expresion regular que me permita, por ejemplo, aceptar todos los caracteres menos un conjunto que yo le defina
tu expresión tenga los caracteres que no vas a aceptar y lo niegas
!preg_match()
<code>if(!preg_match()){// lo que si va}
Si desean practicar con expresiones regulares, esta página es la indicada:
https://regex101.com/
En el curso de Expresiones Regulares aqui en Platzi la utilizamos.
Las expresiones regulares son muy usadas para validaciones(además del tipico if, else, switch).
Es muy importante saber sus fundamentos, igual en internet se pueden sacar expresiones mas comunes, pero sin duda pegar y copiar de internet sin saber como funciona es una mala constumbre de programadores.
Gran forma de explicar este tema que anteriormente lo había visto y me parecía difícil. Con esta explicación me quedo muy claro. Gracias.
¿Existe alguna página que me permita conocer todas las expresiones regulares a profundidad?
al fin entendí los que significaba este vomito de caracteres '/^[0-9a-zA-Z]{6,9}$/'
🍃Las expresiones regulares (regex) en PHP son una herramienta muy útil para trabajar con cadenas de texto. Una expresión regular es un patrón que describe un conjunto de cadenas. En PHP, se pueden usar expresiones regulares para buscar, reemplazar, extraer y validar información en una cadena de texto.
Aquí hay algunos ejemplos de código que muestran cómo usar expresiones regulares en PHP:
preg_match: busca una ocurrencia de un patrón en una cadena y devuelve true si se encuentra o false si no se encuentra. Tiene dos argumentos: el patrón y la cadena en la que se busca.
$email='juan@example.com';$pattern='/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/';if(preg_match($pattern,$email)){echo'La dirección de correo es válida.';}else{echo'La dirección de correo no es válida.';}
preg_replace: reemplaza todas las ocurrencias de un patrón en una cadena con un valor especificado. Tiene tres argumentos: el patrón, el valor con el que se quiere reemplazar y la cadena en la que se busca.
$text='Hola, mi nombre es Juan.';$pattern='/Juan/';$replacement='Pedro';$newText=preg_replace($pattern,$replacement,$text);echo$newText;// Imprime: Hola, mi nombre es Pedro.
preg_split: divide una cadena en un array de subcadenas en función de un patrón. Tiene dos argumentos: el patrón y la cadena que se quiere dividir.
$text='Hola, mi nombre es Juan y tengo 30 años';$pattern='/, | y /';$words=preg_split($pattern,$text);print_r($words);/*
Imprime:
Array
(
[0] => Hola
[1] => mi nombre es Juan
[2] => tengo 30 años
)
*/
Estos son solo algunos ejemplos de cómo se pueden usar expresiones regulares en PHP. Hay muchas más funciones y opciones disponibles, y es importante entender cómo funcionan las expresiones regulares para sacarles el máximo partido.