Personalmente trataría de reducir la complejidad de la RE utilizando logica adicional.
Ejemplo:
Código Javascript
:
Ver originalvar testcases = [
'AS1234-5',
'ABC123-A',
'ABC123-1',
'ABCD12-3',
'AB1234-5',
'AB1234-51',
'ABCDE4-5'
];
var filter= /^([a-z]{2,4}\d{2,4})-\d$/i;
testcases.forEach(function(s) {
var valid = s.length == 8 && filter.exec(s);
console.log(s, valid ? 'OK' : 'NOK');
});
/*
AS1234-5 OK
ABC123-A NOK
ABC123-1 OK
ABCD12-3 OK
AB1234-5 OK
AB1234-51 NOK
ABCDE4-5 NOK
*/