若是纯粹用正则来验证一个日期的正确与否, 那你至少还得考虑润年等情况, 比较复杂, 所以换个思路
<script language=javascript>
function isTime(str)
{
  var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/); 
  if(r==null)return false; var d = new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]); 
  return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()==r[7]);
}
alert(isTime("2002-1-31 12:34:56"));
alert(isTime("2001-2-29 12:54:56"));
alert(isTime("2002-1-41 12:00:00"));
</script>