正则表达式验证价格(十进制类型)

时间:2015-01-28 08:23:06

标签: c# asp.net-mvc-5 decimal

我已经查看了堆栈溢出,试图找到解决方案,但没有运气,所以为什么我导致提出问题..

我的表单上有一个字段,价格,十进制类型,这是可选的,具体取决于他们从下拉列表中选择的内容,所以我不能使用[必需]属性。

当提交表单时,如果他们从下拉列表中选择了一个值,要求用户输入邮资价格,那么我需要检查此字段以确保其有效小数,这样做我有以下内容

public static bool IsValid(decimal postagePrice)
{
   var regex = new Regex(@"^\d+.\d{0,2}$");
   return regex.IsMatch(postagePrice);
}

但它抱怨并说“参数类型字符串的参数类型十进制不可分配”我理解,我也不能使用Decimal.TryParse,因为它需要一个字符串。

如何解决此(我无法将类型从十进制更改为字符串)

2 个答案:

答案 0 :(得分:3)

如果您只想验证该值最多有两个小数位,则可以使用模数:

public static bool IsValid(decimal postagePrice)
{
    return postagePrice % 0.01m == 0m;
}

答案 1 :(得分:1)

Regular expressions处理字符串 - 就这么简单。

因此,在使用正则表达式对其进行验证之前,您需要以某种方式将小数转换为字符串。