C#中十进制数验证的正则表达式

时间:2015-11-26 13:18:22

标签: c# regex c#-4.0

我需要正则表达式,它允许正值和负值范围小数值

.89-10000.000300,.....

我的正则表达式是^\d*\.?\d*

问题是,当您输入$!*等特殊字符时,它会接受这些字符。

3 个答案:

答案 0 :(得分:1)

而不是正则表达式,我会使用decimal.ParseAllowDecimalPoint and AllowLeadingSign styles以及.作为NumberDecimalSeparator InvariantCulture的文化来解析它。

var d = decimal.Parse("-.89", 
                      NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign, 
                      CultureInfo.InvariantCulture);

这可以捕捉您提到的所有需求。

答案 1 :(得分:1)

你错过了反击!单点在Regex表达式中具有不同的含义。

public static bool IsValidDecimal()
{
    string input = "132456789"
    Match m = Regex.Match(input, @"^-?\d*\.?\d+");
    return m.Success && m.Value != "";
}

答案 2 :(得分:1)

如果您热衷于使用regex,请执行以下操作:

^-?[0-9]*\.?[0-9]+$

See live demo