Вы можете использовать отрицательный прогноз.
^(?!\d+[a-z]\d)\d.*
с установленным флагом безразличного регистра.
Демо
Соответствие этому регулярное выражение означает, что строка не содержит 3-символьную подстроку, состоящую из ди git, буквы, ди git в этом порядке. Если вся строка должна быть сопоставлена при успешном совпадении, добавьте .*
в конец регулярного выражения.
Механизм регулярного выражения выполняет следующие операции.
^ match beginning of line
(?! begin negative lookahead
\d+[a-z]\d match digits-letter-digit
) end negative lookahead
\d match a digit
Обратите внимание, что \d
в конце должен следовать за негативным прогнозом. Если бы регулярное выражение было ^\d(?!.\d+[a-z]\d)
, а строка - 1A1
, то отрицательный прогноз не смог бы найти di git -letter-di git в A1
и общее совпадение было бы успешным (неверно).
Поскольку отрицательный указатель выводится на начало строки и не потребляет никаких символов, в случае неудачи (совпадение успешно) поиск \d
в конце регулярного выражения начинается с начала строки.