/^([АВЕМНОРСТУХ][АВЕКМНОРСТУХ][АВЕКМНОРСТУХ]\d\d\d?|[АВЕКМНОРСТУХ][АВЕКМНРСТУХ][АВЕКМНОРСТУХ]\d\d\d?|[АВЕКМНОРСТУХ][АВЕКМНОРСТУХ][АВЕКМНОРСУХ]\d\d\d?|[АВЕКМНОРСТУХ][АВЕКМНОРСТУХ][АВЕКМНОРСТУХ][0-689]\d\d?|[АВЕКМНОРСТУХ][АВЕКМНОРСТУХ][АВЕКМНОРСТУХ]\d[0-689]\d?|[АВЕКМНОРСТУХ][АВЕКМНОРСТУХ][АВЕКМНОРСТУХ]\d\d[0-689]?)$/.exec( 'КОТ777' )
и в if() dublicate можно не сравнивать с true, условный оператор и так подразумевает там правдивое значение, и вообще тогда записать "if( ! dublicate ) { push }" без else.