我已尝试使用以下正则表达式来验证应大于零的小数
@"^-?(?!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
答案 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
}