It's much easier to make a regexp if the full complexity of what you need to do is known up-front.
This one should get you most of the way there:
Old Name:
(.*[^0-9])([0-9]?[0-9])[-.]?([0-9][0-9])[-.]?([0-9][0-9][0-9][0-9])(\.[^.]+)
New Name:
\1\4.\2.\3\5