Oct
29
2008
Validar fechas con expresiones regulares en ASP y Javascript
Escrito por: admin en ProgramaciónContinuando 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á.
Otros artículos relacionados:
- Validar direcciones de Internet o URL’s con expresiones regulares en Javascript
- Validar direcciones de e-mail con expresiones regulares en ASP y Javascript
- Validar campos y parámetros con expresiones regulares en ASP
- Eliminar saltos de línea en un textarea con Javascript

Entradas (RSS)
Muchas gracias, muy útil la verdad.
Realmente muy bueno lo de las expresiones regulares, recientemente necesité algo para asp y javascript y me has sido de gran ayuda
saludos cordiales
un colega
Gracias a vosotros por enriquecer también mi blog, es un placer para mí compartir la experiencia (poca) que tengo.
quiero utilizar una de las expresiones que me estan facilitando ojalaaaaaaaa me sirva para lo que la quiero
Esta validación presenta un problema, dado que algunas fechas “válidas” las muestra como inválidas. Ej. “26/02/2010″.
Gracias por comentar KiberPro, pero yo acabo de probar esa fecha y me la da como válida. Estoy utilizando esta función:
function esValidoFecha(a) {
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(a);
}