我正在尝试使用此要求构建正则表达式。
要求:
最大长度 - 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
答案 0 :(得分:6)
您可以尝试以下使用positive lookahead assertion的正则表达式。
^(?=.{1,5}$)\d+(?:\.\d{1,2})?$
<强>解释强>
^
断言我们刚开始。(?=.{1,5}$)
断言长度必须从1到5。\d+
允许一个或多个数字。(?:\.\d{1,2})?
小数点后面的允许位数的可选小数部分必须是一个或两个。$
断言我们在行尾。