ti ho scritto una funzioncina al volo perché non ho tempo di provare a farla con le preg:
codice:
function check_hour($orario){
  if (preg_match("/^[\d]{2}(\.)[\d]{2}(\.)[\d]{2}$/",$orario)){
    list ($ore,$minuti,$secondi)=explode(".",$orario);
    if (($ore<=23 && $ore>=0) && ($minuti<=59 && $minuti>=0) && ($secondi<=59 && $secondi>=0))
      return true;
    else
      return false;
  }else return false;
}


// prova della funzione
echo check_hour("00.30.59")?"ok":"no";

dovrebbe funzionare, fai un pò di prove...