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