Прежде всего, регулярное выражение, которое вы нашли, нуждается в некоторой работе.Я думаю, что автор не понимает, что означают запятые внутри классов символов, с одной стороны.Если вы игнорируете ненужные запятые и группы захвата, вы можете упростить все до следующего:
/^([a-hj-mp-z0-9]{9}[a-hj-mp-rtv-z0-9][a-hj-mp-z0-9]\d{6}|[a-hj-z0-9]{6,11}\d{5})$/i
... и далее, в зависимости от вашего движка регулярных выражений:
/^((?!.{9}[su])[a-z0-9-[io]]{11}\d{6}|[a-hj-z0-9]{6,11}\d{5})$/i
При этом, номер, который вы дали (BCG23253
), не удовлетворяет требованию, потому что его длина составляет всего 8 символов.Чтобы удовлетворить минимальные требования (часть [a-hj-z0-9]{6-11}\d{5}
выше), ваш ввод должен быть длиной 11-17 символов, заканчиваться 5 цифрами и не включать в себя букву I
.
Так что BCG23253
не должен проходить, но BCGBCG23253
(например) будет.Как я уже сказал в своем комментарии выше, я думаю, что нам нужна дополнительная информация о конкретных совпадениях, которые вы ищете.Для меня это звучит так, как будто вы опубликовали регулярное выражение для соответствия post -1980 VIN, а не VIN до 1980 года.Либо это, либо BCG23253
, в конце концов, не является действительным VIN.