十进制验证大于零

时间:2013-12-07 08:59:35

标签: c# asp.net regex

我已尝试使用以下正则表达式来验证应大于零的小数

@"^-?(?!0(,0+)?$)\d+(,\d{1,3})?$";@"^[0-9]+\d*\.\d{3}$"但这不符合我的预期。我需要在剩余的情况下,当值为0.000时才激活验证。

Valid : 1,123.000
        1.000
        0.001
Invalid : 0 or 0.000

2 个答案:

答案 0 :(得分:5)

使用正则表达式非常难,但使用转换函数非常简单且更清晰

decimal d;
if (decimal.TryParse(input, out d) && d > 0.0m) {
  // Valid
} else {
  // Invalid
}

编辑:正则表达式是一个非常强大的字符串处理工具,应该是每个程序员工具箱的一部分。但这并不总是正确的工具:有时需要达到其他目的。

答案 1 :(得分:2)

尝试这个我测试了几个样本并且它正在运行

这对我有用

string expression= @"^(\()?[0-9]+(?>,[0-9]{3})*(?>\.[0-9]{3})?(?<!^[0\.]+)$";

if (Regex.IsMatch("0.000", expression))
{
  //Failed
}

if (Regex.IsMatch("0.001", expression))
{
  //passed
}

if (Regex.IsMatch("1.023", expression))
{
  //passed
}

if (Regex.IsMatch("11,111,111.111", expression))
{
  //passed
}