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