ASP.net, c#, 如何检查输入的值是否为数字,可以是小数或简单的整数

ASP.net, c#, how to check if the value entered is numeric, it could be decimal or simply integer

我试图限制用户输入有效的十进制值(无逗号)

什么是最好的方法。

我的代码:

try{
 Convert.ToInt32(stringToCheck)
}
catch
{
   //invlaid
}

如果用户输入的是十进制值,例如 3.0,尽管它是一个有效值,但它会失败。

如果我尝试 Convert.ToDouble(stringToCheck)

如果用户输入 3,6,这个就无法捕获

请帮忙!

谢谢。

使用正则表达式。 Here 是怎样的。

一个例子:

using System;
using System.Text.RegularExpressions;
    public class Example
    {

    public static void Main()
    {
        string s = "123";

        if (Regex.IsMatch(s, @"^\d+$"))
        {
            Console.WriteLine("Given string is numeric");
        }
        else
        {
            Console.WriteLine("Given string is non-numeric");
        }
    }
}

您可以更改表达式以接受任何类型的数字。

更新:

完整的解决方案是:

static bool isNumeric(string s)
    {
        if (Regex.IsMatch(s, @"^-?[1-9][0-9,\.]+$"))
        {
            return true;
        }
        else
        {
            return false;
        }
    }

以下代码是测试:

Console.WriteLine(isNumeric("0123"));//returns false
Console.WriteLine(isNumeric("2.2"));//returns true
Console.WriteLine(isNumeric("-2.0"));//returns true
Console.WriteLine(isNumeric("123123.2"));//returns true
Console.WriteLine(isNumeric("123sad"));//returns false
        var stringToCheck =  "3,6";
        var isDouble =            
        double.TryParse(stringToCheck,NumberStyles.AllowDecimalPoint, 
         NumberFormatInfo.InvariantInfo, out double doubleValue);

        if (isDouble)
        {
            // Do stuff if doubleValue variable
        }
        else
        {
            // code to run if not double
        }