Intereting Posts
Как передать параметр в навигационную модель просмотра с помощью WinRT Caliburn.Micro? Лучший способ использовать AutoMapper для сглаживания вложенных объектов? Как записать двоичные данные «как есть» в реестр (т. Е. У меня есть видимые двоичные данные как строка только из regedit) Что означает оператор «=>» в свойстве в C #? MEF = может возникнуть разочарование? сохранить файл в виртуальном каталоге Вызов метода веб-службы ASP.NET с помощью HTTP-запроса Текстовое поле Readonly для WPF с видимым курсором (.NET 3.5) Как я могу определить, имеет ли float повторное десятичное расширение в C #? Передача статических параметров classу Почему конструкторы на абстрактных classах должны быть защищены, а не публично? Сканирование WIA через фидер C # Запуск приложения Windows Form из службы (и в Vista) Почему (double) 0.6f> (double) (6 / 10f)? FileHelpers выбрасывает OutOfMemoryException при анализе большого файла csv

Отключить пробел в тексте

Как заблокировать пробел в записи в текстовом поле?

Я пробовал это, но он не работает:

[RegularExpression(@"/^\s/", ErrorMessage = "white space is not allowed in username")] public string UserName { get; set; } 

Отрицание ‘^’ не должно допускать пробела в тексте, но оно не позволяет мне вводить текст в поле. Любая помощь?

Используйте \S (это отрицание символа \s = не-пробельный символ):

 @"^\S+$" 

Если пустая строка разрешена, замените + на * :

 @"^\S*$" 

Просто увидел комментарий, который вы сказали «вам нужно работать с DataAnnotation», вот как это сделать без Regex

 public class WhiteSpaceCheckerAttribute : ValidationAttribute { public override bool IsValid(object value) { var strValue = value as string; return strValue != null && !strValue.Contains(" "); } } 

использование

 [WhiteSpaceChecker(ErrorMessage = "white space is not allowed in username")] public string UserName { get; set; } 

Это не касается проверки на стороне клиента, которую вы можете легко реализовать. Следующая ссылка должна помочь вам с этой концепцией. Валидация annotations пользовательских данных на стороне клиента

^ работает как «отрицание» только внутри classов символов, например [^ ] означает любой символ, кроме пробела. Когда используется вне [] , ^ означает «в начале строки». Таким образом, ваш оригинальный RE говорит «Пробел в начале строки» – почти точно противоположное тому, что вы хотите.

Я не знаком со спецификой C # RE, но из остальных ответов RE вы хотите, вероятно, ^\S+$ : 1 или более непространственных символов между началом и концом строки.

Вы можете сделать это без RegEx. Добавив этот код в событие KeyPress вашего текстового поля.

 private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { e.Handled = e.KeyChar == ' '; }