Disabilita lo spazio bianco nel testo

Come posso bloccare lo spazio bianco nelle voci della casella di testo?

Ho provato questo ma non funziona:

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

La negazione ‘^’ non dovrebbe consentire lo spazio bianco nel testo ma non mi permette di inserire alcun testo nel campo. Qualsiasi aiuto?

Usa \S (che è la negazione di \s = carattere non spaziatura):

 @"^\S+$" 

Se è consentita una stringa vuota, sostituire + con * :

 @"^\S*$" 

Appena visto il commento che hai detto “devi lavorare con DataAnnotation”, ecco il modo per farlo senza Regex

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

uso

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

Questo non copre la validazione lato client che puoi facilmente implementare. Il seguente link dovrebbe aiutarti con quel concetto di convalida dell’annotazione dei dati personalizzati lato client

^ funziona come “negazione” solo all’interno delle classi di caratteri, ad esempio [^ ] significa qualsiasi carattere tranne lo spazio. Quando viene usato al di fuori di [] , ^ significa “all’inizio della stringa, quindi la tua RE originale dice” Uno spazio all’inizio della stringa “- quasi esattamente l’opposto di quello che vuoi.

Non ho familiarità con le specifiche di C # RE, ma dal resto delle risposte, l’RE che si desidera è probabilmente ^\S+$ : 1 o più caratteri non spaziali tra l’inizio e la fine della stringa.

Puoi farlo senza RegEx. Aggiungendo questo codice nell’evento KeyPress della tua casella di testo.

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