我在textbox里面输入一串数字,然后获取数字去调用其他的
数字的格式为111-222-333,中间有两个-
要怎么写代码用try catch或者if然后能实现,如果格式不正确,messageboxshow呢!
感谢!
string pattern = @"\d{3}-\d{3}-\d{3}";
Regex regex = new Regex(pattern);
if (!regex.IsMatch(this.textBox1.Text.Trim()))
MessageBox.Show("格式错误!");
那你为什么要用textbox,有masktextbox可用啊,直接设置好格式,别人就只能按照格式填写了,想乱填填不进去
可以使用MaskedTextBox,设置Mask
属性的验证格式,比如你问题的验证格式为000-000-000
,示例如下:
运行结果:
这样,可以不用try...catch
或者if
来手动验证用户输入的数据是否合法。
更多Mask属性的验证格式,请参考微软官方文档:
如果是变长的字符串,可以使用正则表达式加监听文本框的Leave
或者TextChanged
事件,示例如下:
private void txtPhone_TextChanged(object sender, EventArgs e)
{
if (!(new Regex(@"^\d{1,3}-\d{1,3}-\d{1,3}$")).IsMatch(txtPhone.Text))
{
txtPhone.ForeColor = Color.Red;
}
else
{
txtPhone.ForeColor = Color.Black;
}
}
private void txtPhone_Leave(object sender, EventArgs e)
{
if (!(new Regex(@"^\d{1,3}-\d{1,3}-\d{1,3}$")).IsMatch(txtPhone.Text))
{
MessageBox.Show("输入格式不正确");
}
}
运行效果: