RegEx的范围在1-999999之间,精度最多为2位小数

时间:2017-03-09 14:31:36

标签: javascript jquery regex

我尝试在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内输入金额,但我也想处理十进制的情况。

2 个答案:

答案 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})?$