Почему-то все должно быть в одном регулярном выражении?Вы можете пройти и сопоставить для \s\s
, и убедиться, что возвращает false.затем вы можете просмотреть каждого персонажа и убедиться, что не более 1 из них является .
, а не более одного из них - -
.Вы также можете проверить, нет ли начальных или конечных пробелов, или вы можете быть добры к своим пользователям и просто обрезать ввод.Затем вы можете убедиться, что у вас есть хотя бы один символ, и если длина равна ровно одному символу, это не тире или точка.
Наконец, поскольку все остальные ваши условия теперь выполнены, выможете сопоставить строку с [A-Z0-9 -.]*
, и вы получите ответ.
Исходя из вашего неудачного регулярного выражения, я подозреваю, что у вас гораздо больше условий, которые вы действительно хотите выполнить, но, надеюсь, этого было достаточно, чтобы позволитьвыяснить, как встретить их самостоятельно.