Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 大于零的十进制验证_C#_Asp.net_Regex - Fatal编程技术网

C# 大于零的十进制验证

C# 大于零的十进制验证,c#,asp.net,regex,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 使用正则表达式很难做到这一点,但使用转换函数非常简单且更清晰: decimal d; if (decimal.TryPar

我尝试了下面的正则表达式来验证应该大于零的小数

@“^-?(?!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

使用正则表达式很难做到这一点,但使用转换函数非常简单且更清晰:

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

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

试试这个,我测试了几个样本,它是有效的

这对我有用


string expression=@“^(\()?[0-9]+(?>,[0-9]{3})*(?>\[0-9]{3})?(?这个正则表达式很难,因为您可能有用逗号分隔的重复组。请记住允许使用空格作为数字分隔符的区域设置,以及使用句点作为分隔符和逗号作为小数点的区域设置。+1更加清晰,并且具有区域性意识。使用CultureInfo.CurrentCulture作为TryParse的参数会更加清晰。@Joe and explicit of当然……但考虑到正则表达式的替代方案,即使是默认值也是一种改进。
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
}