Нет ничего плохого в вашем регулярном выражении. Он действителен на основании указанного вами правила.
Давайте сделаем это один шаг за один раз:
[A-Z]
означает совпадение ровно 1 заглавными буквами алфавита.
[A-Z]?
означает, соответствует либо 0, либо 1 алфавит верхнего регистра.
Посмотрите, что происходит? Если нет, переходите.
[A-Z][A-Z][A-Z]
означает соответствие точно 3 верхним регистровым алфавитам. (1 для каждого правила [A-Z]
)
[A-Z][A-Z][A-Z][A-Z]?
означает, что первые три символа должны быть в верхнем регистре. Последний может быть либо 0, либо 1 алфавит верхнего регистра.
В вашем примере, 1NTH
содержит ровно три верхних алфавитов случае, что является правильным. Вы не вводили никаких ограничений на то, должен ли он содержать номер или нет, будь то до или после 3 алфавитов. И последние [A-Z]?
? Ну, это необязательно, правда? (См 2 правило #)
Я узнал, что онлайн-валидаторы могут вести себя иначе, чем те, которые вы используете. – watery
Проверьте выход, чтобы узнать, какие детали соответствуют, что должно дать вам представление о том, что происходит. –