正则表达式以验证价格

时间:2018-07-14 11:09:59

标签: c# regex

我需要一个正则表达式来验证价格,格式如下:
0.07 //有效
0.0 //无效
20 //有效

以上所有表达式都是我想要实现的

^\d{0,8}(\.\d{1,4})?$

我使用上面的表达式,该表达式也接受0.0,在我的情况下无效。 谢谢。

3 个答案:

答案 0 :(得分:3)

为什么不仅使用RegEx,还要检查value > 0 我想您也不希望价格为负-其他“数字检查”方法最有可能认为有效

答案 1 :(得分:0)

您可以使用否定的lookahead来断言从行首开始的内容不是零,或者不是零乘以零,然后是与点匹配且只有零的可选部分。

^(?!0*\.0+$)\d*(?:\.\d+)?$

说明

  • ^断言行的开头
  • (?!负向超前
    • 0*\.0+$匹配零个或多个0(后面跟一个圆点)和一个或多个乘以0直到字符串结尾
  • )提前关闭
  • \d*匹配一个数字零次或多次
  • (?:非捕获组
    • \.\d+匹配一个点后跟一个或多个数字
  • )?关闭非捕获组并将其设置为可选
  • $声明行的结尾

答案 2 :(得分:0)

在C#中,我建议使用标准库来验证十进制值,例如使用Decimal.TryParse

然后,您可以实现以下内容:

public static bool IsValid(string price) {

    var result = Decimal.TryParse(price, out decimal d);

    if (result && d != 0) {
        return true;
    }

    return false;

}