正则表达式不起作用?

sup*_*ool 4 javascript regex

我正在尝试使用此要求构建正则表达式.

要求:

最大长度 - 5(如果是十进制数,则为小数点)

十进制进动 - 最多2位数(如果是十进制数).

数字 - 不必是十进制数字(非强制性)

码:

<script>
function myFunction() {
   var regexp = /^(?!\.?$)\d{0,5}(\.\d{0,2})?$/;
    var num = 12345.52; // i will test here indiffernt ways
    var n = regexp.test(num)
    document.getElementById("demo").innerHTML = n; // returns true or false
}
</script>
Run Code Online (Sandbox Code Playgroud)

输出应如下所示:

12345.52 - >它应该返回,false因为长度为8 inc点但它返回true

123456.52 - > false.我才知道d{0,5}是在十进制之前寻找的

12.45 - >是的.完美的(长度5,岁差2)

12345 - >真的.完美的(长度5,岁差 - 不是疯子)

我希望构建一个满足所有上述场景的正则表达式.

参考:点击这里

Avi*_*Raj 6

您可以尝试使用正向前导断言的以下正则表达式.

^(?=.{1,5}$)\d+(?:\.\d{1,2})?$
Run Code Online (Sandbox Code Playgroud)

DEMO

说明:

  • ^ 断言我们刚开始.
  • (?=.{1,5}$) 断言长度必须从1到5.
  • \d+ 允许一个或多个数字.
  • (?:\.\d{1,2})? 小数点后允许数字的可选小数部分必须为1或2.
  • $ 断言我们处于最后阶段.