my $s1 = "Aabcddee";
my $s2 = "Aabcddde";
my $s3 = "aaA!!!ba";

my $p = qr/^(?:([A-Za-z])(?:(?!\1)|\1(?!\1)))+$/;

$s1 .= ($s1 =~ m/$p/) ? " matches" : " does not match";
$s2 .= ($s2 =~ m/$p/) ? " matches" : " does not match";
$s3 .= ($s3 =~ m/$p/) ? " matches" : " does not match";

printf "%s\n%s\n%s\n", $s1, $s2, $s3;