Ты рядом.Одним из способов решения этой проблемы может быть
^[A-Z0-9 ]*[A-Z][A-Z0-9 ]*\d[A-Z0-9 ]*$|^[A-Z0-9 ]*\d[A-Z0-9 ]*[A-Z][A-Z0-9 ]*$
, который допускает произвольную букву, цифру или пробел ([A-Z0-9 ]*
) до, после и между буквой и цифрой и позволяет любой букве идти первойили число, которое будет первым.
Однако есть и другой способ решить эту проблему.Вы можете использовать два регулярных выражения.Сначала проверьте соответствие регулярному выражению
^[A-Z0-9 ]*$
, которое проверяет наличие только букв, цифр и пробелов.Затем проверьте регулярное выражение
[A-Z][A-Z0-9 ]*\d|\d[A-Z0-9 ]*[A-Z]
, которое проверяет, по крайней мере, одну букву ([A-Z]
) и одно число (\d
), при этом разрешены оба порядка.Обратите внимание, что этот шаблон не включает в себя шляпу и знак доллара, поэтому буква и цифра могут встречаться в любом месте строки.
Преимущество подхода с двумя регулярными выражениями заключается в том, что его легче читать и изменять позже..