如何验证文本框?

时间:2013-02-02 17:39:15

标签: c# winforms validation

我有一个文本框,用户可以通过以下方式输入数据。 例如1.2-2012-2 但它也可能是; 12.5 -2010-4(强调第一部分) 我的第一个方法是MaskedTextBox,但由于第一部分没有确定的大小,我不能使用它。 现在我想验证文本框。即我会让用户输入他/她想要的东西,但最后我想知道他/她是否以正确的方式输入了它。 例如如果用户键入a12.4 / 2012 ^ 14(这是不正确的)我会知道。 我不知道如何将这个想法转换为代码,所以请有人指导我。 如果有另一种方法。

2 个答案:

答案 0 :(得分:3)

我猜匹配的文本框无法匹配不一致的输入,所以最好在这里使用正则表达式。

您可以使用此正则表达式

^\d+(\.\d+)?-\d+-\d+$

然后您可以检查输入,如

if(Regex.IsMatch(input,regex))
     //valid

^描述了字符串的开头

\d表示数字,即0-9

+匹配前一个字符1到多次..所以\d+会匹配1到多个数字

?匹配前一个字符0到1次。所以(\.\d+)?匹配.后跟1到多个数字可选

$描述了字符串的结尾

使用^$我们指定输入的开头和结尾,否则它可以匹配两者之间的输入..

答案 1 :(得分:1)

您可以使用TextChanged事件和Regex表达式:

private void textBox1_TextChanged(object sender, EventArgs e)
{
    var myRegex = new Regex(@"^(\d)+\.\d-(\d){4}-\d$");

    if (myRegex.IsMatch(textBox1.Text))
    {
        //Validation is ok
    }
    else
    {
        //Validation isn't ok
    }
}

我已经测试了这段代码。其作品。唯一我不完全了解你的模式但在上面的模式应该可以工作。

如果。是可选的,然后使用此模式:@"^(\d)+(\.\d)*-(\d){4}-\d$"