OK, as much as it puts a bad taste in my mouth to even paste this into the answer box, I think this may be what you're looking for (your scroll bar is going to get a reasonable workout today)...
(([!@#%_\-=`~,\.\/;: ]*(YY(YY)?([!@#%_\-=`~,\.\/;: ]*(M{1,4}([!@#%_\-=`~,\.\/;: ]*(DD?)?)?)?)?))|([!@#%_\-=`~,\.\/;: ]*(YY(YY)?([!@#%_\-=`~,\.\/;: ]*(DD?([!@#%_\-=`~,\.\/;: ]*(M{1,4})?)?)?)?))|([!@#%_\-=`~,\.\/;: ]*(M{1,4}([!@#%_\-=`~,\.\/;: ]*(DD?([!@#%_\-=`~,\.\/;: ]*(YY(YY)?)?)?)?)?))|([!@#%_\-=`~,\.\/;: ]*(M{1,4}([!@#%_\-=`~,\.\/;: ]*(YY(YY)?([!@#%_\-=`~,\.\/;: ]*(DD?)?)?)?)?))|([!@#%_\-=`~,\.\/;: ]*(DD?([!@#%_\-=`~,\.\/;: ]*(YY(YY)?([!@#%_\-=`~,\.\/;: ]*(M{1,4})?)?)?)?))|([!@#%_\-=`~,\.\/;: ]*(DD?([!@#%_\-=`~,\.\/;: ]*(M{1,4}([!@#%_\-=`~,\.\/;: ]*(YY(YY)?)?)?)?)?)))[!@#%_\-=`~,\.\/;: ]*
Got all that? This is it broken down into the 9 possibilities of the order in which the token types (Year, Month or Day) can appear (if I understand you correctly)... I can explain if you ask, but don't wanna waste time if nobody is interested - even someone stumbling on this answer and commenting and asking for an explanation is enough - just let me know.
(
([!@#%_\-=`~,\.\/;: ]*(YY(YY)?([!@#%_\-=`~,\.\/;: ]*(M{1,4}([!@#%_\-=`~,\.\/;: ]*(DD?)?)?)?)?))|
([!@#%_\-=`~,\.\/;: ]*(YY(YY)?([!@#%_\-=`~,\.\/;: ]*(DD?([!@#%_\-=`~,\.\/;: ]*(M{1,4})?)?)?)?))|
([!@#%_\-=`~,\.\/;: ]*(M{1,4}([!@#%_\-=`~,\.\/;: ]*(DD?([!@#%_\-=`~,\.\/;: ]*(YY(YY)?)?)?)?)?))|
([!@#%_\-=`~,\.\/;: ]*(M{1,4}([!@#%_\-=`~,\.\/;: ]*(YY(YY)?([!@#%_\-=`~,\.\/;: ]*(DD?)?)?)?)?))|
([!@#%_\-=`~,\.\/;: ]*(DD?([!@#%_\-=`~,\.\/;: ]*(YY(YY)?([!@#%_\-=`~,\.\/;: ]*(M{1,4})?)?)?)?))|
([!@#%_\-=`~,\.\/;: ]*(DD?([!@#%_\-=`~,\.\/;: ]*(M{1,4}([!@#%_\-=`~,\.\/;: ]*(YY(YY)?)?)?)?)?))
)[!@#%_\-=`~,\.\/;: ]*