One approach might be to extend the SKIP-FAIL trick for excluding URLs to also exclude dates:
$text =~ s{ (?: $url | $date) (*SKIP) (*FAIL) | ($digits_3_4) }{...}xmsg
Of course, this leaves you with the headache of trying to define a regex to match every possible format of date that a human bean might imagine. Here's a start, but please be aware that this code is untested and also that the $date regex does not nearly cover every possible permutation of day-month-year ordering or the many internal separator sequences that might be used; you will have to extend this defnition as needed. (Also note that the $yr pattern is limited to the 21st century.)
(This regex is 5.8.9 compatible.) The first thing you will want to do is write a Test::More script to test your $date regex against every possible date format you've ever encountered and any others you can imagine.
BTW: You have never said if your version of Perl is 5.10 or later, so I don't even know if the SKIP-FAIL trick is possible for you. What version of Perl are you using?
Give a man a fish: <%-{-{-{-<
|