private void textBox1_TextChanged(object sender, EventArgs e)
{
if (!Regex.IsMatch(textBox1.Text,@"\d+"))
{
MessageBox.Show("没有数字");
}
}
我是想判断一个文本框是否是数字,这个代码是可以的,问题是 “333.335” 判断是数字我可以接受,但 “333.335kkkkk”也判断是数字,就不太合理了,这个该如何修改呢。
{
if (!Regex.IsMatch(textBox1.Text,@"\d+"))
{
MessageBox.Show("没有数字");
}
}
我是想判断一个文本框是否是数字,这个代码是可以的,问题是 “333.335” 判断是数字我可以接受,但 “333.335kkkkk”也判断是数字,就不太合理了,这个该如何修改呢。
@"^[1-9][0-9]*$"
//允许带小数点
@"^[1-9][0-9]*(\.[0-9]+)?$"
{
b = Convert.ToDouble(textBox1.Text.Trim());
}
catch
{
MessageBox.Show("请输入正确的数字", "错误提示");
}
^[1-9]d*$ //匹配正整数
^-[1-9]d*$ //匹配负整数
^-?[1-9]d*$ //匹配整数
^[1-9]d*|0$ //匹配非负整数(正整数 + 0)
^-[1-9]d*|0$ //匹配非正整数(负整数 + 0)
^[1-9]d*.d*|0.d*[1-9]d*$ //匹配正浮点数
^-([1-9]d*.d*|0.d*[1-9]d*)$ //匹配负浮点数
^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$ //匹配浮点数
^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$ //匹配非负浮点数(正浮点数 + 0)
^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$ //匹配非正浮点数(负浮点数 + 0)
评注:处理大量数据时有用,具体应用时注意修正
你错在看错楼层了,我没有引用你的既然提到了,就顺便说一下,try...catch是最不被推荐的方法,用捕获异常的方式判断,效率是最低的,是实在没有办法时才使用的方式
输入值可以正确转换的时候,效率并不低,但输入值不正确,需要捕获异常时,效率就非常低了,所以在需要频繁调用判断的需求中,最好不用捕获异常的方式用ASCII码判断,效率高,但不能带格式判断
用正则判断,灵活,可判断格式,效率一般
还有其它一些判断方式,可根据需求选用
{
Regex ex = new Regex(@"^\d+$");
Match m = ex.Match(s);
if (!m.Success)
{
return true;
}
return false;
}
将你要判断的字符传进此方法就可以了,我前阵子也在用.
{
e.Handled = e.KeyChar < '0' || e.KeyChar > '9'; //允许输入数字
if (e.KeyChar == (char)8) //允许输入回退键
{
e.Handled = false;
}
}textbox只允许输入数字和小数点 public void tbKeyPress(object sender, KeyPressEventArgs e)
{
string str = ((TextBox)sender).Text;
e.Handled = e.KeyChar < '0' || e.KeyChar > '9'; //允许输入数字
if (e.KeyChar == (char)8) //允许输入回退键
{
e.Handled = false;
}
if (e.KeyChar == (char)46)
{
if (str == "") //第一个不允许输入小数点
{
e.Handled = true;
return;
}
else
{ //小数点不允许出现2次
foreach (char ch in str)
{
if (char.IsPunctuation(ch))
{
e.Handled = true;
return;
}
}
e.Handled = false;
}
}
}
{
if ((tbox.Text.Length == 1) & (e.KeyChar == '.'))
tbox.Text = "0" + tbox.Text;
e.Handled = true;
{
if (dataGridView2.CurrentCell != null)
{
if (!Regex.IsMatch(dataGridView2.CurrentCell.Value.ToString(), @"^[1-9][0-9]*(\.[0-9]+)?$"))
{
MessageBox.Show("你输入的不是数字");
}
else
{
MessageBox.Show("真的是数字");
} } }
我用上面写法,只要单元格包含"0" 或者 "." 都显示不是数字,我真的是郁闷了,大家都帮忙看一下吧.