Это должно работать:
/^((?!.{7,})[0-9]*[1-9]+[0-9]*|(?!(SVC|svc))[a-zA-Z]{5}[a-wy-zA-WY-Z]|(?!(000|.{7,}))[0-9a-zA-Z]*([a-zA-Z][0-9]|[0-9][a-zA-Z])+[0-9a-zA-Z]*[a-wy-zA-WY-Z])$/gm
Я не могу объяснить это регулярное выражение, так как оно слишком длинное и просто повторяет одно и то же понятие снова и снова. Однако, учитывая следующий ввод, он соответствует только первым пяти строкам:
002000
jfkasd
002dfd
sVcabc
abc65i
000000
00012c
0123ax
SVCabx
svcabc
abc65x
abc65X
Здесь - первоначальная попытка, которую я предложил, которая не удовлетворяет всем условиям OP, но это сопровождается объяснением:
/^((?!.{7,})[0-9]*[1-9]+[0-9]*|[a-zA-Z]{5}[a-wy-zA-WY-Z]|(?!000)[0-9a-zA-Z]{6})$/gm
Объяснение (которое можно прочитать на самой странице, на которую ведут ссылки):
- У нас есть три варианта, которые должны соответствовать всей строке:
^(…|…|…)$
; - 2-й сигнал тревоги прост: пять букв, за которыми следует одна буква, которая не является
x
или X
, [a-zA-Z]{5}[a-wy-zA-WY-Z]
([^xX]
тоже будет соответствовать цифрам или чему-либо еще). - 3-й вариант немного сложнее: шесть букв или цифр, которым не предшествует
000
; здесь используется отрицательный взгляд, и он работает из-за якоря ^
(если вы удалите его, он сломается). - 1-й вариант аналогичен: ноль или более цифр, за которыми следует один или более ненулевых цифр, за которыми следуют ноль или более цифр; все не начинаются с 7 или более символов.