我需要正则表达式,它允许正和负范围的小数值
如.89
、-1000
、0.00
、0
、300
。。。。。
我的正则表达式是^d*.?d*
问题是,当您输入特殊字符(如$
、!
、*
)时,它会接受这些字符。
如果您热衷于使用regex
,可以使用以下方法:
^-?[0-9]*.?[0-9]+$
查看实时演示
我不使用regex,而是使用具有AllowDecimalPoint
和AllowLeadingSign
样式的decimal.Parse
以及将.
作为NumberDecimalSeparator
(如InvariantCulture
)的区域性来解析它。
var d = decimal.Parse("-.89",
NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign,
CultureInfo.InvariantCulture);
这抓住了你提到的所有需求。
您错过了一个反斜杠!在Regex表达式中,单个点有不同的含义。
public static bool IsValidDecimal()
{
string input = "132456789"
Match m = Regex.Match(input, @"^-?d*.?d+");
return m.Success && m.Value != "";
}