((1[0-2]|0?[1-9]):([0-5][0-9]) ?([AaPp][Mm])) 12:00 pm --------- OK 13:00 1:00 am --------- OK 5:5 am 5:05 PM --------- OK 55:55 09:59 // valid time, but meridiem is missing :01 0:59 00:59 PM