Función preg_match() de PHP

En este artículo explicaremos las expresiones regulares con la función preg_match() de PHP, para pasar a la segunda parte del mismo con la explicación de los filtros y la función filter_var(). No entraremos a explicar el estándar POSIX porque pronto quedará obsoleto.

Una expresión regular (regex), es una secuencia de caracteres que forma un patrón de búsqueda, principalmente utilizada para la búsqueda de patrones de cadenas de caracteres u operaciones de sustituciones.  Definición de la wikipedia.

Las expresiones regulares son útiles, por ejemplo, en los motores de búsqueda. Ejemplo donde se compara dentro de una cadena si existe una palabra :

<!--?php //("palabra que voy a buscar", "la cadena donde busca") if(preg_match("/regulares/","Este es un ejemplo de expresiones regulares")){ echo "Existe coincidencia"; }else{ echo "No existe coincidencia"; } ?-->

En el anterior ejemplo, existe coincidencia porque la palabra “regulares” está contenida en el segundo argumento de la función (en este caso la función devuelve true). Si fuera “Regulares” con mayúscula, no habría coincidencia, pero SI la habría en el caso de que en el primer argumento, pusiéramos el flag i, de esta manera:  “/Regulares/i”

Identificar palabras aisladas: Esto se consigue poniendo antes y después de la palabra en el primer argumento de la función, \b. De esta manera: “/\breg\b/”

Modificadores:

         ^  principio de cadena  (ej: /^regulares/)

         $  final de cadena (ej: /regulares$/)

         []  intervalo de números (ej: /regulares[2-5]/ siendo la cadena “regulares2”, existe)

         +  concatenar cadenas

        ()  permite agrupar

         *  repeticiones (multiplicador)

        +n{m}+  repeticiones (ej1: /regu+2{3}+lares/   el número 2 se repetiría 3 veces,      “reg222lares”), (ej2: /regu+2{1,3}+lares/  el número 2 se puede repetir de 1 a 3 veces, “reg2lares” valdría).

Validar un email con expresiones regulares: 

<!--?php //con ^ y $ valida la expresión del principio al final if(preg_match("/^[a-z0-9]+([.][a-z0-9]+)*[@]+[a-z0-9]+[.]+[a-z]{2,4}$/i","vicenreler@hotmail.com")){ echo "Esto es un correo"; }else{ echo "Esto NO es un correo"; } ?-->

Explicación de la expresión regular: Validación de la expresión desde el principio al final (no más) de una cadena que tenga caracteres de la “a” a la “z” o del “0” al “9” concatenados con un punto seguidos de caracteres como los de antes [a-z0-9] los cuales, junto con el punto se pueden repetir (ej: ejemplo.correo.nombre@gmail.com). Luego tendrá que ir una arroba seguida de [a-z0-9] concatenado con un punto más otra cadena de caracteres de la “a” a la “z” cuyo número no podrá ser menor de 2 ni mayor de 4. Todo ello podrá estar en mayúsculas o minúsculas indistintamente (i).