禁用文本中的空格

时间:2013-12-27 12:56:19

标签: c# regex

如何阻止文本框条目中的空白区域?

我尝试了这个但是没有用:

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

'^'否定不允许在文本中使用空格,但它不允许我在字段中输入任何文本。有什么帮助吗?

4 个答案:

答案 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 == ' ';
}