2010/07/11

Validación de fechas con expresiones regulares (Regular Expression)

Para validar fechas en un textbox a traves de expresiones regulares podemos hacer uso de las siguientes simples expresiones:

Formato (MM/dd/yyyy):
([1-9]|1[012])[- /.]([1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d

Formato (dd/MM/yyyy):
(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d

Por supuesto estas validaciones son muy básicas, y no contempla la cantidad de días del mes así como tampoco el manejo de años bisiestos, por ello, para validaciones mas estrictas podemos usar las siguientes expresiones regulares bastante mas complejas:

Formato (MM/dd/yyyy):
^(?:(?:(?:0?[13578]|1[02])(\/|-)31)|(?:(?:0?[1,3-9]|1[0-2])(\/|-)(?:29|30)))(\/|-)(?:[1-9]\d\d\d|\d[1-9]\d\d|\d\d[1-9]\d|\d\d\d[1-9])$|^(?:(?:0?[1-9]|1[0-2])(\/|-)(?:0?[1-9]|1\d|2[0-8]))(\/|-)(?:[1-9]\d\d\d|\d[1-9]\d\d|\d\d[1-9]\d|\d\d\d[1-9])$|^(0?2(\/|-)29)(\/|-)(?:(?:0[48]00|[13579][26]00|[2468][048]00)|(?:\d\d)?(?:0[48]|[2468][048]|[13579][26]))$

Formato (dd/MM/yyyy):
^(?:(?:0?[1-9]|1\d|2[0-8])(\/|-)(?:0?[1-9]|1[0-2]))(\/|-)(?:[1-9]\d\d\d|\d[1-9]\d\d|\d\d[1-9]\d|\d\d\d[1-9])$|^(?:(?:31(\/|-)(?:0?[13578]|1[02]))|(?:(?:29|30)(\/|-)(?:0?[1,3-9]|1[0-2])))(\/|-)(?:[1-9]\d\d\d|\d[1-9]\d\d|\d\d[1-9]\d|\d\d\d[1-9])$|^(29(\/|-)0?2)(\/|-)(?:(?:0[48]00|[13579][26]00|[2468][048]00)|(?:\d\d)?(?:0[48]|[2468][048]|[13579][26]))$

Considerar en caso de usar javascript para la validación el costo computacional en el cliente de una expresión y otra.

21 comentarios:

  1. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  2. Formato dd/mm/yyyy
    ^(0?[1-9]|[12][0-9]|3[01])[\/](0?[1-9]|1[012])[\/](19|20)\d{2}$

    faltaba validar el año 4 digitos

    ResponderEliminar
  3. Formato Rut Chileno
    ^\d{1,2}(\.|)\d{3}(\.|)\d{3}[(-|)][0-9kK]{1}$

    ResponderEliminar
  4. Gracias por el aporte, fue de gran ayuda para validar las fechas :) :)

    ResponderEliminar
  5. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  6. Excelente, ayuda sigan asi muchachos

    ResponderEliminar
  7. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  8. Como debería ser una expresión regular que permita hasta 10 caracteres alfanuméricos en minúscula de la "a" a la "z" y números del "0" al "9", por ejemplo: "alfa2" ó "45flores"?
    Muchas gracias

    ResponderEliminar
  9. Como podria validar una fecha, teniendo en cuenta que tengo fecha inicial y fecha final y la fecha final no puedes ser inferior a la fecha inicial?

    ResponderEliminar
  10. Hola me podrias ayudar?
    Hola, necesito ayuda con una validación que necesito hacer para una practica.
    Lo que necesito validar es un textbox con expresiones regulares:
    - Que reciba 3 palabras(en el mismo textbox)
    - Que cada palabra inicie con mayúscula
    - Cada palabra separada por 1 espacio

    Como lo podría hacer?

    Gracias!

    ResponderEliminar
  11. Hola, (19|20)\d{2}[-/.](0[1-9]|1[012])[-/.](0[1-9]|[12][0-9]|3[01]) ahí tienes yyyy/mm/dd

    ResponderEliminar
  12. Si tengo una fecha como input en formato dd/mm/yyyy, y quiero generar una expresion regular que me calcule todas las fechas que engloban desde esa fecha hasta el dia 11/12/2006,por ejemplo, como seria? siendo el input mayor al dia 11/12/2006.

    ResponderEliminar
  13. Necesito validar los numeros de telefonos en mi caso (505)-(84851491), el numero de cedula de mi pais 001-280174-0011U, los correos electronico que ingresen, me pueden ayudar

    ResponderEliminar
  14. [RegularExpression("^(0?[1-9]|[12][0-9]|3[01])[\/](0?[1-9]|1[012])[\/](19|20)\d{2}$", ErrorMessage = "EL CAMPO FECHA DEBE CONTENER EL SIGUIENTE FORMATO dd/mm/a")]
    cuando coloco la siguiente expresión me arroja error en la barra invertida " \ "
    como podría solucionarlo?

    ResponderEliminar