Вы бы написали исключения с отрицательным взглядом вперед / назад. Добавление простого отрицательного взгляда на двухбуквенный префикс к существующему регулярному выражению будет выглядеть следующим образом.
^(?!BS|BM|GG|GB|GH|KY|VG)([A-Z]{2})G(([A-Z]|\d){8})\d{1}
Но его можно немного сократить, сгруппировав несколько общих наборов
^(?!B[SM]|G[GBH]|KY|VG)([A-Z]{2})G(([A-Z]|\d){8})\d{1}
Я также сократил (G{1})
до G
, потому что это то же самое, если только вам не нужна группа захвата. {1}
не имел никакого эффекта.
Наконец, не гласные. Опять же, используя отрицательный взгляд и используя метасимвол \w
(который является alphanumeri c плюс подчеркивание).
^(?!B[SM]|G[GBH]|KY|VG)([A-Z]{2})G((?![AEIOU_])\w){8}\d
Просто в стороне, вы можете заменить второй отрицательный взгляд на положительный взгляд, в сочетании с классом отрицанных символов.
^(?!B[SM]|G[GBH]|KY|VG)([A-Z]{2})G((?=[^AEIOU_])\w){8}\d