c#输入验证正则表达式

本文关键字:正则表达式 验证 输入 | 更新日期: 2023-09-27 18:17:27

我刚开始学习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);
            }
        }

谢谢!

c#输入验证正则表达式

你的正则表达式必须是

regexpattern = "^'d+$"; 

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

var regex = new Regex(@"^'d+$");
if (!regex.IsMatch(textBox1.Text))
{
    MessageBox.Show("error, numbers only please!");
}

对于任何开发人员来说,regex库都是一个很好的资源。很有可能你要找的东西已经贴在那里了。例如,您可能希望将年龄限制在某个范围内。

正则表达式库

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

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
    }
}

with regex:

不需要用+'d来验证人的年龄。一个人通常活在0 / 113岁之间。:)

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

其他方法:

使用int。TryParse

int AgeAsInt; 
if(int.TryParse(age, out AgeAsInt)) 
使用<<p> strong> linq :
if(!String.IsNullOrEmpty(age) && age.All(char.IsDigit))

as I would it

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

你可以用want it。我个人比较喜欢后者。