Validador de Data em JavaScrip com Expressão Regular

Publicado por Rodrigo Ferreira Valentim 20/08/2007

[ Hits: 20.054 ]

Homepage: http://www.unitech.pro.br

Download javascriptDate.html




Valida a data em JavaScript através de expressão regular.

De forma complexa de ser compreendida, contudo mais interessante em desenpenho e limpeza de código para ser implementada.

  



Esconder código-fonte

function validateDate(id) {
   var RegExPattern = /^((((0?[1-9]|[12]\d|3[01])[\.\-\/](0?[13578]|1[02])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[\.\-\/](0?[13456789]|1[012])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|(29[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))|(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|1\d|2[0-8])02((1[6-9]|[2-9]\d)?\d{2}))|(2902((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00))))$/;

   if (!((id.value.match(RegExPattern)) && (id.value!=''))) {
      alert('Data inválida.');
      id.focus();
   }
}

Scripts recomendados

Autofoco no primeiro campo de um formulário

Script de Formulario de Contatos

Validar extensão de arquivo

JSOO - Trabalhar o checkbox com javascript

Clona / Copia dados digitados em um campo exibe no outro


  

Comentários
[1] Comentário enviado por oscarcosta em 24/08/2007 - 23:43h

Esse "monstrinho" valida ano bissexto?

[2] Comentário enviado por engos em 25/08/2007 - 13:05h

Sim, esse monstrinho que parece ter 7 cabeças, mas na verdade tem 8, valida tudo que é necessário!

No download inclui um arquivo HTML para que você mesmo possa testar tudo que necessita e já ver como implementar. Só não esqueça de validar se o campo está em branco, caso precise.

[3] Comentário enviado por lanux em 29/08/2007 - 19:57h

O arquivo não está dispoinível para download!!

[4] Comentário enviado por engos em 30/08/2007 - 14:07h

Parece ser algum problema aqui do VOL, pois subiu direitinho.... Vou mandar uma msg pro pessoal avisando, enquanto isso, copie e cole o seguinte com um nome qualquer com .html:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Validador de Data padrão BR</title>
<script type="text/javascript">
function validateDate(id) {
var RegExPattern = /^((((0?[1-9]|[12]\d|3[01])[\.\-\/](0?[13578]|1[02])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[\.\-\/](0?[13456789]|1[012])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|(29[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))|(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|1\d|2[0-8])02((1[6-9]|[2-9]\d)?\d{2}))|(2902((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00))))$/;

if (!((id.value.match(RegExPattern)) && (id.value!=''))) {
alert('Data inválida.');
id.focus();
}
}
</script>
</head>
<body>
<input size="20" value="" onblur="javascript: validateDate(this);"> (dd/mm/aaaa)
</body>
</html>




Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts