Posts Tagged “validar fechas”

Continuando con las expresiones regulares, para validar fechas se puede utilizar la siguiente función en ASP:

function esValidoFecha(cadena)
  set expReg = New RegExp
  expReg.Pattern = "^(((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])))$"
  esValidoFecha = expReg.Test(cadena)
  set expReg = nothing
end function

La expresión regular (que se puede poner en una única línea eliminando los _ finales) es un poco larga porque ha de tener en cuenta los días de los meses del año, los años bisiestos,… Para validar del lado del cliente (antes de enviar el formulario), se puede utilizar el mismo patrón en Javascript:

function esValidoFecha(cadena) {
  strExpReg = /^(((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])))$/;
  return strExpReg.test(cadena);
}

En esta función en Javascript sí que es necesario juntar la expresión en una única línea quitando los _ porque de lo contrario no funcionará.

Etiquetas: , , ,

Comments 10 Comentarios »