我有一个正则表达式,用于检查范围0到999999之间的值。
/^((?:\d{1,3},)?\d{1,3})(\.\d{2})$/
问题是0.00有效。我想将0.01设置为有效的最小量。因此,输入0.00将使我无效。
我对正则表达式的黑色艺术很可怕。有人可以帮忙吗?
感谢。
答案 0 :(得分:5)
不要将逻辑放入正则表达式中。它们用于匹配模式,而不是进行数值比较。
在Perl中,这将是:
if ( $s =~ /^((?:\d{1,3},)?\d{1,3})(\.\d{2})$/ && ( $s > 0 ) ) {
# acceptable number
}
如果你正确使用它们,正则表达不是黑色艺术。尝试使用它们进行数值计算并没有正确使用它们。