我有以下正则表达式

var pattern = /^(\d{2,3})?(?:\.\d{2,5})?$/;

//The value must be always lesser than 999.99999
if(!pattern.test(billRate.value)|| parseFloat(billRate.value) > parseFloat("999.99999"))
{
    alert("Invalid It accepts values between 00.01 to 999.99999");
    return false;
}


最小值应始终为00.01,最大值为999.99999。

不幸的是,上述正则表达式无法正常运行,请有人帮我解决这个问题。

正则表达式也应始终检查小数点之前至少有两个数字,小数点之后至少有两个小数

最佳答案

你可以试试这个

^(?:0?00\.(?:01\d{0,3}|0[2-9]\d{0,3}|[1-9]\d{1,4})|(?:0?0[1-9]|0?[1-9]\d|[1-9]\d{2})\.\d{2,5})$

不幸的是,我没有办法对其进行测试。

可读版本

 ^

 (?:
      0? 00 \.                      #  000.01000 - 000.99999
      (?:
           01 \d{0,3}
        |  0 [2-9] \d{0,3}
        |  [1-9] \d{1,4}
      )
   |
      (?:                           #  001.00000 - 999.99999
           0? 0 [1-9]
        |  0? [1-9] \d
        |  [1-9] \d{2}
      )
      \.
      \d{2,5}
 )

 $

10-06 12:22