Expresiones regulares con PHP

Portada del libro de OReilly sobre Expresiones regularesEl otro día, hablando con los compañeros de trabajo, comentábamos que cada programador tiene su punto dévil en la programación: a unos no se les da bién las fechas, a otros las codificaciones, … Pero casi todos teníamos un punto dévil en común: las expresiones regulares. Cada vez que un programador llega a un punto en que se tiene que utilizar las expresiones regulares… Se empieza buscando por Google, haciendo pruebas, leyendo tutoriales.

La cuestión es que eso mismo se hace la próxima vez que tocan expresiones regulares, como si nunca se aprendiesen. Así que quiero hacer un breve resumen que sirva para búsquedas básicas.

Varias sintaxis
foo La cadena “foo”
^foo “foo” al principio de la cadena
foo$ “foo” al final de la cadena
^foo$ Exactamente “foo”, sin nada más
[abc] Cualquier letra entre ‘a’, ‘b’ y ‘c’
[az] Cualquier letra minúscula
[^AZ] Cualquier letra que no sea una mayúscula
(gif|jpg) Reconoce ‘gif’ o ‘jpg’
[az]+ Una o más letras minúsculas
[0-9.-] Un número, un punto o un guión
^[a-zA-Z0-9_]{1,}$ Cualquier palabra de al menos una letra, número o _ Subrayado
([AZ]{3}|[0-9]{4}) Reconocer tres letras o números de cuatro

Unos ejemplos de verificación:

  • Dirección de email (si PHP > 5.2.0, entonces filter_var()):
    '/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/'
  • Nombre de usuario:
    '/^[az\d_]{5,20}$/i'
  • IP:
    '/^(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/'
  • Dominio:
    '/^(http|https|ftp):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i'

Vía bueltge.de

Un comentario en “Expresiones regulares con PHP

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>