You asked about regex, but for such an obvious replacement, you could also create a function splitand parse. On my machine, it's about 22% faster:
my @parts = split '-', $date;
my $ndate = join( '-', @parts[0,2,1] );
You can also store different orders, for example:
my @ymd = qw<0 2 1>;
my @mdy = qw<2 1 0>;
, :
my $ndate = join( $date_separator, @date_parts[@$order] );
.