Foros del Web » Programando para Internet » Javascript »

Problema al validar fecha con expresion regular

Estas en el tema de Problema al validar fecha con expresion regular en el foro de Javascript en Foros del Web. Saludos gente !!! vereis encontré por internet una expresion regular para validar una fecha con el formato dd/mm/aaaa. pero resulta que al probarlo con el ...
  #1 (permalink)  
Antiguo 01/05/2005, 17:51
 
Fecha de Ingreso: febrero-2005
Mensajes: 198
Antigüedad: 19 años, 2 meses
Puntos: 5
Problema al validar fecha con expresion regular

Saludos gente !!!

vereis encontré por internet una expresion regular para validar una fecha con el formato dd/mm/aaaa. pero resulta que al probarlo con el explorer me funciona bien, sin embargo con el Opera y con el Firefox me esta dando errores. Como de expresiones regulares no tengo ni idea me gustaria que alguien me dijera que es lo que esta mal para que falle con esos navegadores.

ahi teneis un enlace a la pagina, recordad que con el explorer no os fallará.
enlace

Y tambien pongo el codigo fuente, por si teneis prisa y esas cosas...

Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<
HTML>
<
HEAD>
<
TITLE> New Document </TITLE>
<
SCRIPT LANGUAGE="JavaScript">

  function 
fecha(idCampo){
    var 
datePat = /^(((0[1-9]|[12][0-9]|3[01])([/])(0[13578]|10|12)([/])(d{4}))|(([0][1-9]|[12][0-9]|30)([/])(0[469]|11)([/])(d{4}))|((0[1-9]|1[0-9]|2[0-8])([/])(02)([/])(d{4}))|((29)(.|-|/)(02)([/])([02468][048]00))|((29)([/])(02)([/])([13579][26]00))|((29)([/])(02)([/])([0-9][0-9][0][48]))|((29)([/])(02)([/])([0-9][0-9][2468][048]))|((29)([/])(02)([/])([0-9][0-9][13579][26])))/;                                                
        
var 
matchArray 
document.getElementById(idCampo).value.match(datePat);

    if (
matchArray != nullalert("fecha valida");
    else 
alert("fecha invalida formato dd/mm/aaaa");    
 }

</SCRIPT>
</HEAD>

<BODY>
<b>Validar una fecha con el formato dd/mm/aaaa: </b>
<INPUT TYPE="text" NAME="texto" id="texto" size="30"/>
<BUTTON onclick="fecha('texto')">validar</BUTTON>
</BODY>
</HTML> 
PD: hay una linea que esta mal, le añade espacios en blanco no se por que,debe ser así:
document.getElementById(idCampo).value.match(dateP at);
  #2 (permalink)  
Antiguo 02/05/2005, 04:26
 
Fecha de Ingreso: febrero-2005
Mensajes: 198
Antigüedad: 19 años, 2 meses
Puntos: 5
Bueno el problema son las / que hay en la expresion regular.

La primera y la ultima no las quito y quito las intermedias por otro caracter y me lo valida bien. ¿alguien sabe como hacer para que coja las / que estan dentro de la expresion ?
  #3 (permalink)  
Antiguo 02/05/2005, 04:53
 
Fecha de Ingreso: febrero-2005
Mensajes: 198
Antigüedad: 19 años, 2 meses
Puntos: 5
Ya he encontrado la solucion !!!!


El problema era que las barras inclinadas / que estan en la expresion y que no marcan el princpio y el final de la expresion deben tener otra barra \ delante para que no las pille como final de expresion. Es importante porque EL ESTANDAR ES ASI por tanto si no se las ponemos en el explorer no nos da problemas pero el opera y el firefox que siguen el estandar si lo dan (luego pasa lo que pasa, que si el firefox y el opera son una mierda y esas cosas )

Asi que si quereis que el codigo que he puesto antes FUNCIONE EN LOS NAVEGADORES EXPLORER, OPERA Y FIREFOX (que son los que he probado) sustituid la expresion regular por esta otra:

var datePat = /^((([0][1-9]|[12][\d])|[3][01])[-\/]([0][13578]|[1][02])[-\/][1-9]\d\d\d)|((([0][1-9]|[12][\d])|[3][0])[-\/]([0][13456789]|[1][012])[-\/][1-9]\d\d\d)|(([0][1-9]|[12][\d])[-\/][0][2][-\/][1-9]\d([02468][048]|[13579][26]))|(([0][1-9]|[12][0-8])[-\/][0][2][-\/][1-9]\d\d\d)$/;


o si lo preferis por esta otra:

var datePat = /^(0[1-9]|1\d|2\d|3[1-2])\/(0[1-9]|1[0-2])\/\d{4}$/;
  #4 (permalink)  
Antiguo 02/05/2005, 05:24
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 384
Antigüedad: 19 años, 3 meses
Puntos: 0
jue.. eso es ilegible xD

No habia visto nunca eso de expresiones regulares, q cosa mas rara... alguien me explica por encima q son?
__________________
m!ketrix
CINE25 - Red Social de Cine
byinspiroh
  #5 (permalink)  
Antiguo 14/05/2005, 08:17
 
Fecha de Ingreso: noviembre-2003
Mensajes: 383
Antigüedad: 20 años, 5 meses
Puntos: 2
miketrix_esp, mira esta dirección http://bulma.net/body.phtml?nIdNoticia=770 es bastante buena.
Te da una idea de lo que son las expresiones regulares.
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 16:15.