我想要匹配:
0.01
0.12
1.00
1.12
12.00
12.34
但不是:
0
0.00
.00
.12
获得不能为零的价格值。
我写了这个正则表达式:
/(^\d{1,}\.\d{2}$)|(^\d{1,}$)/
但它匹配:
0
0.00
我想消除它。
我也尝试使用排除规则,例如^(?!0)(?!0\.00)\d{1,}\.\d{2}|\d+$
,但没有成功。
答案 0 :(得分:3)
您希望匹配一个带小数2位但不是0的值:
^(?![.0]*$)\d+\.\d{2}$
否定lookahead检查,如果该字符串不仅包含0
和.
\d+\.\d{2}
确保所需的格式:One or more数字后跟.
后跟2位数字。
Test at regex101.com(另见右侧解释)
要允许1
,2.2
将最后一部分更改为\.\d{1,2}
并将其设为可选:
^(?![.0]*$)\d+(?:\.\d{1,2})?$
答案 1 :(得分:1)
答案 2 :(得分:1)
(?=.*?[1-9])(^\d+\.\d{2}$)|(?=.*?[1-9])(^\d{1,}$)
试试这个。刚刚添加(?=.*?[1-9])
来否定0
。请参阅演示。