Usuario:ManuelRomero/ProgramacionWeb/php/POO/e r

De WikiEducator
Saltar a: navegación, buscar


Expresiones Regulares (ER)

Una expresión regular es un patrón de búsqueda formado por un conjunto de caracteres que siguen unas reglas. Sirve para comprobar si una cadena de texto cumple o no cumple ese patrón.

Las expresiones regulares son muy útiles para validar datos como teléfonos, emails, URLs, códigos postales, etc.

Podemos usar una expresión regular para dos tipos de comprobación:

1. Coincidencia exacta: la cadena debe ajustarse completamente al patrón. 2. Coincidencia parcial: la cadena solo debe contener el patrón en alguna parte.

Antes de ver ejemplos, es necesario saber cómo se escribe una expresión regular en PHP y cómo se utiliza con funciones como preg_match(), preg_replace() o preg_split().

Delimitadores

Una expresión regular en PHP debe estar rodeada por un carácter delimitador, que marca el inicio y el final del patrón. Este carácter es de elección libre, siempre que no entre en conflicto con el contenido del propio patrón.

El delimitador es imprescindible porque PHP necesita una forma inequívoca de saber que el primer parámetro de funciones como preg_match(), preg_replace() o preg_split() es una expresión regular y no una cadena, un número o una constante. Si no hubiera delimitadores, PHP no podría distinguir el patrón del resto del código.

Además, los delimitadores permiten añadir modificadores al final del patrón (como i para mayúsculas/minúsculas o m para modo multilínea). También es habitual elegir un delimitador que no aparezca dentro del propio patrón para evitar tener que escaparlo.




/una expresión/      // Carácter delimitador /
#^[^0-9]$#           // Carácter delimitador #
+php+                // Carácter delimitador +
%[a-zA-Z0-9_-]%      // Carácter delimitador %

Expresando la expresión regular=

Para escribir una expresión regular podemos usar caracteres literales (tal cual) o bien emplear metacaracteres, rangos y agrupamientos que permiten definir patrones más complejos.

En la siguiente tabla se resumen los metacaracteres más habituales. Tabla basada en el material de: http://www.mclibre.org/consultar/php/lecciones/php_expresiones_regulares.html


Patrón Significado
c carácter literal c
. cualquier carácter
^c la cadena debe empezar por el carácter c
c$ la cadena debe terminar por el carácter c
c+ uno o más caracteres c
c* cero o más caracteres c
c? cero o un carácter c
\n nueva línea
\t tabulador
\ carácter de escape para escribir caracteres especiales:

^ . [ ] % ( ) | * ? { } \

(cd) agrupación: los caracteres c y d juntos
c|d carácter c o carácter d
c{n} exactamente n repeticiones del carácter c
c{n,} n o más repeticiones del carácter c
c{n,m} entre n y m repeticiones del carácter c
[a-z] cualquier letra minúscula
[A-Z] cualquier letra mayúscula
[0-9] cualquier dígito
[cde] cualquiera de los caracteres c, d o e
[c-f] cualquier letra entre c y f (c, d, e o f)
[^c] cualquier carácter que no sea c
[[:alnum:]] cualquier letra o dígito
[[:alpha:]] cualquier letra
[[:digit:]] cualquier dígito
[[:lower:]] cualquier letra minúscula
[[:punct:]] cualquier signo de puntuación
[[:space:]] cualquier espacio en blanco
[[:upper:]] cualquier letra mayúscula

Expresiones regulares en PHP

Son varias las funciones relacionadas con expresiones regulares en PHP: http://php.net/manual/es/book.pcre.php

La función más utilizada es preg_match($expresion, $cadena), que permite comprobar si una cadena cumple (o no) una expresión regular. http://php.net/manual/es/function.preg-match.php

Coincidencia exacta o solo que contenga

Es muy importante distinguir entre:

  • Coincidencia parcial: la cadena contiene el patrón en algún punto.
  • Coincidencia exacta: la cadena debe coincidir por completo con el patrón (inicio y fin).

La expresión siguiente especifica una cadena que **contenga** uno o más números:

$exp = /[0-9]+/;

Ejemplos:

$cad1 = "asdfljoieka1asdf"; // Cumple: contiene un número
$cad2 = "1";               // Cumple
$cad3 = "134124";          // Cumple
$cad4 = "asdfasd4";        // Cumple
$cad5 = "asdfasd";         // No cumple

Si queremos que la cadena solo contenga números:

  • debe empezar por un número → ^
  • debe terminar por un número → $
$exp = /^[0-9]+$/;

En el ejemplo anterior, solo $cad3 cumple esta expresión.






Icon activity.jpg
Validar expresiones regulares
  • Realiza un programa que permita insertar una expresión regular y una cadena.
  • Posteriormente debe validarse si la cadena cumple o no la expresión regular.









Icon activity.jpg
Practica con expresiones regulares
Realiza una app que valide datos de entrada de un formulario
  • La aplicación va a validar los siguientes ítems:

Formulario datos personales.png