Обнаружение того, что не разрешено в этой ситуации, не будет хорошей идеей. Вы упомянули, что обнаружение специальных символов, отличных от этих двух (С, &) и пробела, будет приемлемым. А как насчет вкладок? Как насчет символов новой строки? А как насчет нелатинских символов? Если вы уверены, что этого никогда не произойдет, продолжайте обнаруживать специальные символы. Если в следующем регулярном выражении найдено совпадение, то ввод неверен:
[\ ~ \ @ # \ $ \% \ ^ \ & * () _ + \ = - [] {} \\ | \ "\" \; \: \ / \ ?.> \, \ < `]
Решение, которое предоставлено выше, хорошо, что оно проверяет, были ли использованы правильные символы, однако оно будет совпадать, даже если используются какие-либо из указанных выше специальных символов. Я думаю, это не то, что вы хотите. Вот модифицированная версия:
^ (([A-Za-Z] + [^ A-Za-г \ д & ЦТС] ) | ([^ A-Za-г \ д & ЦТС] [A-Za-Z] +) | ([^ A-Za-г \ d & ЦТС] [A-Za-Z] + [^ A-Za-г \ d & ЦТС] )) $
Если это соответствует, то ввод действителен, иначе это не так. Это, вероятно, не самый эффективный регулярное выражение, но оно должно работать.
Кстати, некоторый пример ввода текста действительно поможет!
Версия без заглавных букв:
^ (([AZ] + [^ AZ \ d & ЦТС] ) | ([^ AZ \ d & ЦТС] [AZ] +) | ([^ AZ \ d & ЦТС] [AZ] + [^ AZ \ d & ЦТС] )) $