Una pregunta ¿no te funciona para PM ? o no funciona en ningun caso.
Si solo falla con PM, prueba a ver si usando 2 variables regex
Es decir
var regexPM=new RegExp("[a-zA-Z]{3}([0-9]{6})([A-Z0-9]{3})?$");
var regexOtros=new RegExp("[a-zA-Z]{4}([0-9]{6})([A-Z0-9]{3})?$");
y luego devuelves el .test que te interese
Si fuese que no furrula en ningun caso pensamos otra solucion
On 15 ene, 00:17, Gabriel Ernesto Gutierrez Añez