Nie wiem po co Ci takie voodoo, ale łap:
'AS09'.replace( /(..)(?:.)(.)/, '$1$2' );
Co robi ten kod? Pobiera 2 grupy znaków: pierwsze 2 znaki ((..)) oraz 4. ((.)). Trzeci znak nie jest przechwytywany, bo jest w tzw. non-capturing group ((?:.)). Żeby z tych grup skorzystać, zamieniam dany string na to, co pobrały te dwie grupy – innymi słowy: korzystam z backreferences ('$1$2').
Można to wyrażenie jeszcze bardziej uprościć wykorzystując liczbę powtórzeń:
'AS09'.replace( /(.{2})(?:.)(.)/, '$1$2' )