C# 整数的C正则表达式

C# 整数的C正则表达式,c#,C#,我正在尝试创建一个静态方法来验证输入是否是一个数字,我想用正则表达式来验证。我在尝试将int转换为string时遇到了一个错误,但据我所知,整数也可以使用regex进行比较 到目前为止,这是我的静态方法 public static void validatenumber(int number) { Regex regex = new Regex("^[0-9]+$"); if (regex.IsMatch(number)) {

我正在尝试创建一个静态方法来验证输入是否是一个数字,我想用正则表达式来验证。我在尝试将int转换为string时遇到了一个错误,但据我所知,整数也可以使用regex进行比较

到目前为止,这是我的静态方法

public static void validatenumber(int number)
    {
        Regex regex = new Regex("^[0-9]+$");

        if (regex.IsMatch(number))
        {
            Console.WriteLine("The input is a number");
        }
        else
        {
            Console.WriteLine("The input is not a number");
        }
    }
这是我试图验证的输入,在Main方法中

        Console.WriteLine("Please enter a number");
        int number= Convert.ToInt32(Console.ReadLine());
        validatenumber(number);
在我的Main方法中,我的变量号必须是一个int,我不能更改它。

您的问题不是您得到的Regex错误,而是您试图将int验证为一个数字。这种验证没有任何意义,因为编译器永远不会允许int变量包含除数字以外的其他内容

如果yot方法正在接收字符串作为参数,那么它是有意义的:

验证枚举字符串数


在这种情况下,您将不会得到此错误,因为正则表达式可以处理字符串。

这里发现您的代码存在问题,这将导致您的正则表达式,因为您必须对字符串而不是int执行正则表达式

然后更改validateEnumber方法,使用int.TryParse方法返回int类型,这更易于阅读

public static int ConvertAndValidateNumber(string numberString)
{
    int.TryParse(numberString, out int number);
    return number; 
}
如果您确实想使用在某些非常特殊的情况下有意义的正则表达式,那么您可以将上述方法更改为:

public static int ConvertAndValidateNumberUsingRegEx(string numberString)
{
    int number;

    // 
    // put your RegEx here...
    //

    // and don't forget to assign the converted string value into the number
    number = (your converted string);

    // return it
    return number; 
}

您可能还想通过在此处测试来验证您的正则表达式是否有效

检查int是否为数字有什么意义?当然是一个数字,否则会出现运行时异常。@KobyDouek我的目的是检查用户是否输入字母或其他符号而不是数字..int number=Convert.ToInt32Console.ReadLine有问题;看看我下面的答案。忘记正则表达式吧——它们在这里太过了。int.TryParse是一种方法。所以我不应该用regex验证它,而只在字符串上使用它?是的,先生。正则表达式仅用于验证字符串。不需要将int变量验证为数字-它们必须是数字。看起来您的输入来自文本框,如果是这种情况,则显示为字符串。验证这一点,并在必要时对其进行分析@hendrix@Koby感谢您的帮助,我只在字符串上使用了正则表达式,突然想到我也应该验证这些数字,我想这是一个非常愚蠢的想法。@hendrix-事实上,您的Console.ReadLine将返回一个字符串。Convert.ToInt32将引发异常。请参阅我对您文章的评论。我的问题是,当用户输入字母时,我会遇到一个异常,这是我试图控制的,但没有成功。@hendrix我更新了我的答案,以便更简洁地回答您的问题。
public static int ConvertAndValidateNumber(string numberString)
{
    int.TryParse(numberString, out int number);
    return number; 
}
public static int ConvertAndValidateNumberUsingRegEx(string numberString)
{
    int number;

    // 
    // put your RegEx here...
    //

    // and don't forget to assign the converted string value into the number
    number = (your converted string);

    // return it
    return number; 
}