文本框验证,带符号的整数

本文关键字:整数 带符号 验证 文本 | 更新日期: 2023-09-27 18:11:40

我想限制用户只能在文本框中键入整数(不是双整数)和符号","。我试过这个代码,但是当我试图擦除错误的输入时,它总是弹出消息框。

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();
}

请帮。

文本框验证,带符号的整数

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

我认为你想把它修复成

if (!System.Text.RegularExpressions.Regex.IsMatch(textBox1.Text, @"^[0-9,]*$"))
{
    MessageBox.Show("Please enter only numbers and commas.");
}

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

如果您只允许使用,作为小数分隔符的整数,请使用

^'d+(?:,'d+)?$

如果你想允许整型数字使用,作为数字分组(千位分隔符)符号,使用

^'d{1,3}(?:,'d{3})*$

要处理Key.Back键,您需要在KeyDown/KeyPress事件处理程序中实现您想要的行为,请参见我如何确定在KeyPress事件中是否按了退格?

试试这个:

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");
    }
}