Valide el formato de tiempo usando preg_match

Quiero validar una entrada de tiempo (como 10:30 am, 02:30 pm) usandopreg_match()

Yo uso esto,

 $pattern   =   "/([1-12]):([0-5])([0-9])( )(am|pm|AM|PM)/";
 if(preg_match($pattern,$time)){
   return true;
 }

Pero cuando doy una entrada como10:30 pmxxxx No será validado. No sé si el método es correcto o no. Ayuda por favor.

Respuestas a la pregunta(3)

Su respuesta a la pregunta