繁体   English   中英

正则表达式验证价格

[英]Regular Expression to validate price

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

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

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

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

为什么不使用那个RegEx,但是也检查value > 0我认为你也不想要负价 - 其他'数字检查'方法最有可能被认为是有效的

您可以使用负向前瞻 ,断言从行的开头跟随的内容不是零或零时间后跟一个匹配点且仅为零的可选部分。

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

说明

  • ^断言线的开始
  • (?!负面的向前看
    • 0*\\.0+$匹配零次或多次0后跟一个点和一次或多次0,直到字符串结束
  • )仔细观察
  • \\d*匹配零位或多位数
  • (?:非捕获组
    • \\.\\d+匹配一个点后跟一个或多个数字
  • )? 关闭非捕获组并使其可选
  • $断言该行的结尾

在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;

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM