On Thu, May 17, 2012 at 3:37 PM, Jim Giner <jim.giner@xxxxxxxxxxxxxxxxxx> wrote: > ok - finally had to come up with my own regexp - and am failing. > > Trying to validate an input of a time value in the format hh:mm, wherein > I'll accept anything like the following: > hmm > hhmm > h:mm > hh:mm > > in a 12 hour format. My problem is my test is ok'ing an input of 1300. > > Here is my test: > > if (0 == preg_match("/([0][1-9]|[1][0-2]|[1-9]):[0-5][0-9]/",$t)) > return true; > else > return false; > > Can someone help me correct my regexp? If the ":" separator is inserted before the regex check, the following should suffice: '/^(0?[1-9]|1[12]):([0-5][0-9])$/' Test script: <?php $testvalues=array("1:00","2:30","12:50","11:00", "13:00","1:69", "01:00","12:59pm","00:40","00:00","a:00","00"); $valid_re = '/^(0?[1-9]|1[12]):([0-5][0-9])$/'; foreach ($testvalues as $time) { if (preg_match($valid_re,$time)) { echo "$time passes\n"; } else { echo "$time fails\n"; } } Produces output: php twelvehourtimecheck.php 1:00 passes 2:30 passes 12:50 passes 11:00 passes 13:00 fails 1:69 fails 01:00 passes 12:59pm fails 00:40 fails 00:00 fails a:00 fails 00 fails -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php