TextBox验证,带符号的整数

时间:2015-09-07 20:17:13

标签: c# regex validation textbox

我想限制用户只能键入整数(不是双精度)和textBox中的符号","。我试过这段代码,但是当我尝试删除错误的输入时,它总是弹出消息框。

if (!System.Text.RegularExpressions.Regex.IsMatch(textBox4.Text, @"^[0-9,-Key.Back]"))
{
    MessageBox.Show("This textbox accepts only alphabetical characters");
    //textBox4.Text.Remove(textBox4.Text.Length - 1);
    //textBox4.Clear();
}

请帮忙。

2 个答案:

答案 0 :(得分:1)

我猜您正在TextChanged事件处理程序中运行代码。问题出在你的正则表达式上。您说您需要允许数字和逗号,但是您要检查是否有数字,,某些范围介于,K之间,还有一些字母(e,{ {1}}等)在字符串的开头有一个文字点

我想你想解决它像

y

当整个输入包含从头到尾的数字和逗号时,^[0-9,]*$正则表达式返回true。

如果您需要仅使用if (!System.Text.RegularExpressions.Regex.IsMatch(textBox1.Text, @"^[0-9,]*$")) { MessageBox.Show("Please enter only numbers and commas."); } 作为小数分隔符的整数,请使用

,

如果要允许带有^\d+(?:,\d+)?$ 的整数作为数字分组(千位分隔符)符号,请使用

,

要处理您需要在KeyDown / KeyPress事件处理程序中实现所需行为的^\d{1,3}(?:,\d{3})*$ 密钥,请参阅How can I determine if the Backspace has been pressed in the KeyPress event?

答案 1 :(得分:0)

试试这个:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (!char.IsDigit(e.KeyChar) && e.KeyChar != ',' && e.KeyChar != (char)Keys.Back)
    {
        e.Handled = true;
        MessageBox.Show("Digits, commas and backspace only");
    }
}