正则表达式不起作用?

时间:2014-10-08 13:13:34

标签: 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>

输出应如下所示:

12345.52 - &gt;它应该返回false,因为长度是8个inc点,但它返回true

123456.52 - &gt;错的。我知道d{0,5}正在寻找十进制之前

12.45 - &gt;是的。完美的(长度5,岁差2)

12345 - &gt;是的。完美的(长度5,岁差 - 不是疯子)

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

参考:Click Here

1 个答案:

答案 0 :(得分:6)

您可以尝试以下使用positive lookahead assertion的正则表达式。

^(?=.{1,5}$)\d+(?:\.\d{1,2})?$

DEMO

<强>解释

  • ^断言我们刚开始。
  • (?=.{1,5}$)断言长度必须从1到5。
  • \d+允许一个或多个数字。
  • (?:\.\d{1,2})?小数点后面的允许位数的可选小数部分必须是一个或两个。
  • $断言我们在行尾。