我需要正则表达式,它允许正值和负值范围小数值
如.89
,-1000
,0.00
,0
,300
,.....
我的正则表达式是^\d*\.?\d*
问题是,当您输入$
,!
,*
等特殊字符时,它会接受这些字符。
答案 0 :(得分:1)
而不是正则表达式,我会使用decimal.Parse
和AllowDecimalPoint
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)