Foros del Web » Programando para Internet » PHP »

Duda con expresión regular

Estas en el tema de Duda con expresión regular en el foro de PHP en Foros del Web. Hola, tengo que comprobar un string que debe ser del tipo: [B|P]-[año]-[mes][dia][entero] ...es decir, algo así [B|P]-[00,01,02...09]-[01,02,03...12][01,02,03...31][01,02,03...] Ejemplos: P-08-111814 B-09-031701 Ante lo cual construí el ...
  #1 (permalink)  
Antiguo 15/04/2009, 12:02
 
Fecha de Ingreso: enero-2007
Mensajes: 97
Antigüedad: 17 años, 10 meses
Puntos: 1
Duda con expresión regular

Hola, tengo que comprobar un string que debe ser del tipo:

[B|P]-[año]-[mes][dia][entero] ...es decir, algo así
[B|P]-[00,01,02...09]-[01,02,03...12][01,02,03...31][01,02,03...]

Ejemplos:
P-08-111814
B-09-031701

Ante lo cual construí el patrón:
$patron = "/[BP] - 0\d{1} - [0[1-9] | 1[0-2]] [0[1-9]|1\d{1}|2\d{1}|3[0-1]] \d{2,3}/";

pero no es el correcto porque acepta codigos que no deberia aceptar. Alguien me puede ayudar porfavor?
De antemano, gracias.
  #2 (permalink)  
Antiguo 15/04/2009, 13:11
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Duda con expresión regular

lee lo siguiente: http://www.forosdelweb.com/f18/aport...s-pcre-646110/

lo que sucede es que debes hacer estricta la expresión, osea... delimitando con ^ y $

Código PHP:
// resulta: mama, ma, pa, papa ... mamamamamaaaa, pappppppp, upaz, ama999, etc...
$patron '[pm]a{1,2}';

// resulta: mama, ma, pa, papa (estricto)
$patron '^[pm]a{1,2}$'
suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 15/04/2009, 13:31
 
Fecha de Ingreso: enero-2007
Mensajes: 97
Antigüedad: 17 años, 10 meses
Puntos: 1
Respuesta: Duda con expresión regular

En efecto, gracias por responder.
Aqui dejo el código con el que me resulto:

Código PHP:
$codigo="P-09-010102";
$patron ="^([B|P|C])-((0[1-9]|1[0-2]){1})-((0[1-9]|1[0-2]){1})((0[1-9]|1[0-9]|2[0-9]|3[0-1]){1})([0-9]{2,})";
        if ( 
ereg($patron,$codigo) )
            return 
1;
        else
            return 
0
  #4 (permalink)  
Antiguo 15/04/2009, 13:39
Avatar de argy  
Fecha de Ingreso: octubre-2007
Ubicación: Longitud 75º Latitud 18º Sur
Mensajes: 614
Antigüedad: 17 años
Puntos: 18
Respuesta: Duda con expresión regular

ereg está contenida en la libreria POSIX que es obsoleta en la version 5.3 y en la 6 no estará disponible.

utiliza preg_match y un delimitador como /, #,etc.

suerte.
__________________
Software libre para un mundo libre.

Eventualmente en el foro.
  #5 (permalink)  
Antiguo 15/04/2009, 13:45
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Duda con expresión regular

Podría ser algo como:
/^[BP]-0\d-(?:0\d|1[012])(?:(?:0|1|2)\d|3[01])\d{2,3}$/
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:12.