C#入口验证正则表达式

时间:2011-12-09 17:58:00

标签: c# regex winforms

我刚开始学习C#。抱歉没有问题。

我的第一个培训应用程序是您输入年龄并在消息框中输出的应用程序。

我想用Regex验证输入,以便输入字母会引发错误。

问题是我不能让它接受正则表达式。

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            string age;
            age = textBox1.Text;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string regexpattern;
            regexpattern = "^\t+";
            string regex1;

            regex1 = Regex.IsMatch(regexpattern);

            if (textBox1.Text == regex1)
            {             
                MessageBox.Show("error, numbers only please!");
            }         
            else
            {
                string age;
                string afe;
                string afwe2;

                afe = "You are ";
                age = textBox1.Text;
                afwe2 = " years old!";

                MessageBox.Show(afe + age + afwe2);
            }
        }

谢谢!

4 个答案:

答案 0 :(得分:4)

你的正则表达式必须是

regexpattern = "^\d+$"; 

修改 编码是错误的。它必须是这样的:

var regex = new Regex(@"^\d+$");

if (!regex.IsMatch(textBox1.Text))
{
    MessageBox.Show("error, numbers only please!");
}

答案 1 :(得分:2)

任何开发人员的优秀资源都是正则表达式库。您正在寻找的机会已经发布在那里。例如,您可能希望将年龄限制在特定范围之间。

regex library

答案 2 :(得分:2)

您不需要正则表达式,只需检查它是否为数字: 这是一个示例代码,希望它应该可以工作。

private void button1_Click(object sender, EventArgs e)
{
    string age = textBox1.Text;
    int i = 0; // check if it is a int
    bool result = int.TryParse(age, out i) // see if it is a int
    if(result == true){ // check if it is a int
        string afe;
        string afwe2;
        afe = "You are ";
        afwe2 = " years old!";
        MessageBox.Show(afe + age + afwe2);
    } else {
        MessageBox.Show("Please Enter a Number!"); // error message
    }
}

答案 3 :(得分:1)

正则表达式

不需要+ \d来验证人的年龄。 通常居住在0 / 113年之间的人。 :)

if(Regex.IsMatch(age, @"^\d{0,3}"))

其他方法:

使用int.TryParse

int AgeAsInt; 
if(int.TryParse(age, out AgeAsInt)) 

使用 linq

if(!String.IsNullOrEmpty(age) && age.All(char.IsDigit))

就像我想的那样

if (int.TryParse(age, out ageAsInt) && ageAsInt <= 113)

你可以用它想要它。就个人而言,我更喜欢最后一个。