我需要一个正则表达式来验证价格,格式如下:
0.07 //有效
0.0 //无效
20 //有效
以上所有表达式都是我想要实现的
^\d{0,8}(\.\d{1,4})?$
我使用上面的表达式,该表达式也接受0.0,在我的情况下无效。 谢谢。
答案 0 :(得分:3)
为什么不仅使用RegEx,还要检查value > 0
我想您也不希望价格为负-其他“数字检查”方法最有可能认为有效
答案 1 :(得分:0)
您可以使用否定的lookahead来断言从行首开始的内容不是零,或者不是零乘以零,然后是与点匹配且只有零的可选部分。
说明
^
断言行的开头(?!
负向超前
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;
}