kernelgpf Posted January 12, 2011 Share Posted January 12, 2011 I have this strip of regex that matches: MM/DD/YYYY and I just need to make it require spaces before each slash (/), as in: MM / DD / YYYY. I've tried "\\s", "\s", "[ ]", "\ " and maybe a few more, new to regex. (0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01])[- /.](19|20)[0-9][0-9] TIA! -Alyssa Quote Link to comment Share on other sites More sharing options...
requinix Posted January 12, 2011 Share Posted January 12, 2011 Regex question, regex forum. (0?[1-9]|1[012]) [-/.] (0?[1-9]|[12][0-9]|3[01]) [-/.] (19|20)[0-9][0-9] Quote Link to comment Share on other sites More sharing options...
cyberRobot Posted January 12, 2011 Share Posted January 12, 2011 Using "\s" seems to works for me; I just added it before and after the "[-/.]" parts: if(preg_match("~^(0?[1-9]|1[012])\s[- /.]\s(0?[1-9]|[12][0-9]|3[01])\s[- /.]\s(19|20)[0-9][0-9]$~", $_GET['date'])) { echo 'match'; } else { echo 'no match'; } Quote Link to comment Share on other sites More sharing options...
kernelgpf Posted January 14, 2011 Author Share Posted January 14, 2011 Neither of those work for me, possibly because the dates I am searching for are in a large text blob, it's not just verifying an entire string is a date. if (preg_match_all('~(0?[1-9]|1[012])\s[- /.]\s(0?[1-9]|[12][0-9]|3[01])\s[- /.]\s(19|20)[0-9][0-9]~', $contents, $out, PREG_SET_ORDER)) { echo "found a date<p>"; foreach($out as $val){ if(empty($val[0])) continue; print "found: $val[0]<br>"; } } Quote Link to comment Share on other sites More sharing options...
kernelgpf Posted January 14, 2011 Author Share Posted January 14, 2011 Figured it out, in the source code it showed tons of spacing and newlines which was throwing it off. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.