in reply to help with a regex

my problem is that on my third regex it matches any day that has a one in it which is not what I want

Your regex is not anchored, so you're matching either a string that contains '1' anywhere, or a string that contains '18' anywhere.

Check perlre for the use of ^, $, \A, \Z, and \z.