我尝试在JavaScript中应用RegEx,允许用户输入最小1和最大999999的ammount,如果用户想要输入十进制的ammount,那么它将允许用户输入十进制精度为2。
以下是具有各自结果的输入
100: Pass
999999: Pass
100.23: Pass
100.2: Pass
100.234: Fail
这是我到目前为止所尝试的^([1-9][0-9]{0,2}|999999)$)
,这允许我在1-999999内输入金额,但我也想处理十进制的情况。
答案 0 :(得分:2)
我建议在逻辑上这样做;
[0, 0.75, 100, 999999, 999999.75, 100.23, 100.2, 100.234].forEach(i => {
var inRange = i >= 1 && i <= 999999; // check whether in range 1-999999
var inPrecisionRange = i * 100 % 1 == 0; //check whether has at most 2 dec. point
console.log(i + " -> " + (inRange && inPrecisionRange));
});
比RegEx IMO更简单,更易读,更易维护
答案 1 :(得分:1)
也许这可行吗?:
^[1-9]\d{0,5}(?:\.\d{1,2})?$