Ответ 1
Используйте \S
(это отрицание символа \S
= non-whitespace):
@"^\S+$"
Если пустая строка разрешена, замените +
на *
:
@"^\S*$"
Как заблокировать пробел в записи в текстовом поле?
Я пробовал это, но он не работает:
[RegularExpression(@"/^\s/", ErrorMessage = "white space is not allowed in username")]
public string UserName { get; set; }
'^' отрицание не должно допускать пробела в тексте, но это не позволяет мне вводить какой-либо текст в поле. Любая помощь?
Используйте \S
(это отрицание символа \S
= non-whitespace):
@"^\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; }
Это не касается проверки на стороне клиента, которую вы можете легко реализовать. Следующая ссылка должна помочь вам с этой концепцией Проверка аннотации пользовательских данных на стороне клиента
^
работает как "отрицание" только внутри классов символов, например. [^ ]
означает любой символ, кроме пробела. Когда используется вне []
, ^
означает "в начале строки. Таким образом, ваш оригинальный RE говорит" Пробел в начале строки "- почти точно противоположное тому, что вы хотите.
Я не знаком со спецификой С# RE, но из остальных ответов RE вы хотите, вероятно, ^\S+$
: 1 или более непространственных символов между началом и концом строки.
Вы можете сделать это без RegEx. Добавив этот код в событие KeyPress вашего текстового поля.
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = e.KeyChar == ' ';
}