如何阻止文本框条目中的空白区域?
我尝试了这个但是没有用:
[RegularExpression(@"/^\s/", ErrorMessage = "white space is not allowed in username")]
public string UserName { get; set; }
'^'否定不允许在文本中使用空格,但它不允许我在字段中输入任何文本。有什么帮助吗?
答案 0 :(得分:2)
刚看到你说“你需要使用DataAnnotation”的评论,这里是没有正则表达式的方法
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; }
这不包括您可以轻松实现的客户端验证。以下链接可以帮助您实现这一概念Client-side custom data annotation validation
答案 1 :(得分:2)
^
仅在字符类中用作“否定”,例如[^ ]
表示除空格外的任何字符。在[]
之外使用时,^
表示“在字符串的开头处。所以你原来的RE说”字符串开头的空格“ - 几乎与你想要的完全相反。 / p>
我不熟悉C#RE的细节,但是从其他答案中,你想要的RE可能是^\S+$
:在字符串的开头和结尾之间有一个或多个非空格字符。< / p>
答案 2 :(得分:1)
使用\S
(否定\s
=非空格字符):
@"^\S+$"
如果允许空字符串,请将+
替换为*
:
@"^\S*$"
答案 3 :(得分:0)
您可以在没有RegEx的情况下执行此操作。通过在文本框的KeyPress事件中添加此代码。
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = e.KeyChar == ' ';
}