C#中用于十进制数验证的Regex

本文关键字:Regex 验证 十进制数 用于 | 更新日期: 2023-09-27 18:24:47

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

.89-10000.000300。。。。。

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

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

C#中用于十进制数验证的Regex

如果您热衷于使用regex,可以使用以下方法:

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

查看实时演示

我不使用regex,而是使用具有AllowDecimalPointAllowLeadingSign样式的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 != "";
}