我想用regex验证我的货币字段。我想允许以下模式条目
1.23
1
.45
0.56
56.00
不允许使用逗号。我已经尝试了\d+(\.\d\d)
但它只允许第一,第四和第五个条目。 \d+(?:\.\d\d+)?
允许除第三个以外的所有人。
答案 0 :(得分:8)
在小数点前使用\d*
代替\d+
来匹配零个或多个数字。还要添加锚点(^
和$
),否则只要有可用的匹配就会传递。这也会验证一个空字符串,所以如果有必要,你可以使用前瞻来确保至少有一个数字:
^(?=.*\d)\d*(?:\.\d\d)?$
答案 1 :(得分:3)
Regexes for floating-point numbers是一个已解决的问题:
\d*\.?\d+
至少两位小数:
(\d*\.\d)?\d+
使其更易于理解:
\d+|\d*\.\d{2,}
正好两位小数:
\d+|\d*\.\d{2}
根据您的语言,不要忘记anchor表达式,以便它必须与整个字符串匹配。