C#中用于十进制数验证的Regex
本文关键字:Regex 验证 十进制数 用于 | 更新日期: 2023-09-27 18:24:47
我需要正则表达式,它允许正和负范围的小数值
如.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 != "";
}