1

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

4

2 回答 2

3

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

你可以使用这个正则表达式

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

然后您可以检查输入

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

^描述字符串的开头

\d代表一个数字,即 0-9

+匹配前面的字符 1 到很多次..so\d+将匹配 1 到多个数字

?匹配前面的字符 0 到 1 time.so(\.\d+)?匹配.后跟 1 到多个数字可选

$描绘了字符串的结尾

和我们指定输入的开始和结束,否则它可以匹配介于两者之间的输入^..$

于 2013-02-02T17:55:12.963 回答
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$"

于 2013-02-02T18:56:12.653 回答