PHP: Validación con expresiones regulares

Hemos visto en la entrada anterior la sintaxis básica para trabajar con expresiones regulares en PHP usando la función preg_match, ahora vamos a ver unos conceptos más que no van a permitir validar nombres de usuarios, nombre completos, teléfonos, email y fechas. Suponiendo siempre que hablamos de formatos de fecha y teléfonos españoles.

Modificadores de preg_match para hacer validaciones

Para ello debemos añadir estos modificadores a los que ya hemos visto:

  1. \d digitos decimales
  2. \w cualquier caracter, tildes,ñ,_,digitos…
  3. \s caracter en blanco , tabulación, retorno, nueva linea.
  4. \D inversa de \d
  5. \W inversa w
  6. \S inversa s
  7. i no distingue mayúsculas minúsculas

Vamos sin más a ver las funciones de ejmplo que tenemos para usar expresiones regulares en la validación de distintos datos.

<?php
/*
\d digitos decimales
\w cualquier caracter, tildes,ñ,_,digitos...
\s caracter en blanco , tabulación, retorno, nueva linea.
\D inversa de \d
\W inversa w
\S inversa s

i no distingue mayúsculas minúsculas

*/

function resultado($valor)
	{
	if ($valor)
		echo "<p>El patron esta contenido en la cadena</p>";
		
	else
		echo "<p>El patron <b>no</b> esta contenido en la cadena</p>";
	}

/*
Esta regla es para permitir usuarios de 4 hasta 28 caracteres de longitud, alfanuméricos y permitir guiones bajos.
*/
function validar_nombre_usuario ($nombre)
	{
	resultado(preg_match('/^[a-z\d_]{4,28}$/i', $nombre)); 
	}


function validar_nombre_completo ($nombre)
	{
	resultado(preg_match('/^[a-zñÑáéíóú\d_\s]{4,28}$/i', $nombre)); 
	}
    
/*Números telefónicos
Esto es para validar números de teléfono españoles sin código de pais es decir: 924870975
*/
function validar_telefono ($telefono)
	{
	resultado(preg_match('/^[0-9]{9,9}$/', $telefono)); 
	}
/*
Esta función valida un email de esta forma:
Primer caracter, no será un número
Luego cualquier caracter normal numero letra . _ tantas veces como sea (no puede ser arroba)
Luego una arroba
Cualquier caracter normal incluyendo _  pero no el . por lo menos de longitud. Seguido de cualquier caracter normal incluido el punto tantas veces como sea.
Necesariamente deberá acabar en . y estará seguido de caracteres mayusculas o minuscula de longitud 2 o 4.
*/
function validar_email ($email)
	{
	resultado(preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/', $email)); 
	}

/*
fución que valida fechas dd/mm/anio
*/
function validar_fecha ($fecha)
	{
	resultado(preg_match('/^(\d\d\/\d\d\/\d\d\d\d){1,1}$/', $fecha));
	}
function validar_web ($url)
	{
	if (strlen($url)>0)
		return (preg_match('/^[http:\/\/|www.|https:\/\/]/i', $url));
	return TRUE;
	}

/*
$usuario="jlmora";
$nombre="Juan José Mora";
$telefono="685979898";
$email="mi_email.lo_Pongo.dificil@vaya_servidor.no.si.es";
$fecha="30/03/2011";
validar_nombre_usuario($usuario);
validar_nombre_completo($nombre);
validar_telefono($telefono);
validar_email($email);
validar_fecha($fecha);

$usuario="Juan Luis";
$nombre="Juan Luis Mora º";
$telefono="6a85979898";
$email="m.i_email@servidor.es";
$fecha="2/03/2011";
validar_nombre_usuario($usuario);
validar_nombre_completo($nombre);
validar_telefono($telefono);
validar_email($email);
validar_fecha($fecha);
*/
?>

Originally posted 2011-03-30 18:12:00.

8 Responses to “ PHP: Validación con expresiones regulares ”

  1. feliciana dice:

    Buenos dias Juan Luis,estoy liada con la practia de empresa,¿hay que hacer un fichero a parte que nos compruebe si existe el usuario?
    Gracias.

  2. feliciana dice:

    eso ya esta hecho.

    • jlmora dice:

      El login es para acceder a a la administración de las empresas, pero antes se tiene que hacer la parte pública.

      Tenemos que hacer los ficheros:
      empresas.php
      buscar.php

      y en la clase mysql, tenemos que añadir los métodos

      mostrar empresas
      buscar
      biscar categorias
      listar categorias
      listar categorias

      Después se tiene que usar los anteriores métodos y ficheros para hacer la parte pública de la aplicacion, donde los usuarios puedan acceder a las empresas y categorías y además hacer búsquedas.

  3. fernando dice:

    hola juan luis,
    quisiera conocer la dirección a la que conectarse para poder acceder a impresaex
    gracias

  4. Alberto dice:

    Dentro de los archivos php cuando ponemos require o include es conveniente poner también la ruta completa o no es necesario.

  5. fer dice:

    Me agradó este tutorial porque me fue muy útil

Deja un comentario