Bom dia a todos,
Hoje vou utilizar uma expressão regular postada no site Linha de Código para poder mostrar o seu exemplo de uso. Segundo um comentário de um leitor do site de referência, a expressão regular aplicada já teve uma correção para validar as datas em anos bissextos.
Para comparar se uma data no formato dd/mm/YYYY foi informada corretamente, utilize o seu Javascript da seguinte forma:
function JavascriptUtils()
{
this.valida_data = function (data)
{
if(!data)
{
return false;
}
data = data.replace('/', '');
data = data.replace('/', '');
data = data.replace('/', '');
var er = /^(([0][1-9]|[12][0-9])02(19|20)([13579][26]|[02468][048])|
([0][1-9]|[12][0-8]|[19])02(19|20)([02468][1235679]|[13579][01345789])|
((([0][1-9]|[12][0-9]|30)(0[469]|11)|
([0][1-9]|[12][0-9]|3[01])(0[13578]|1[02]))((19|20)[0-9][0-9])))$/;
return (!data.match(er));
};
};
Aviso! Na declaração da pattern da expressão regular para validação das datas, eu adicionei quebras de linhas na mesma por questões de layout do site, no seu código fonte deixe tudo em uma linha apenas.
Na função acima, você deve informar uma data qualquer no formato legível aos usuários, no caso dd/mm/YYYY. Para validar em um formulário você pode fazer da seguinte forma:
function ValidaForm ()
{
this.consulta = function ()
{
var util = new JavascriptUtils();
if($F('id_funcionario') == 'S')
{
alert('Selecione um Funcionário');
return false;
}
if(!util.valida_data($F('data_inicio')))
{
alert('Informe a Data de Início do Calculo');
return false;
}
if(!util.valida_data($F('data_termino')))
{
alert('Informe a Data de Término do Calculo');
return false;
}
return true;
};
};
Logo o código HTML para o evento 'onsubmit' de um formulário:
<script>var consulta = new ValidaForm();</script>
<form action="/save.php" method="post" id="form" onsubmit="return valida.consulta();">
Espero que tenha sido útil para vocês, abraços e até a próxima.
Referências
Exemplo original - Linha de código - Expressão regular para validação de datas - Reinaldo Marques de Lima
Correção da expressão regular - Comentário do usuário Flávio em 16/12/2009




