0

我想限制用户在 primefaces 输入文本中输入无效数量。最大整数和小数位数长度在运行时是已知的。我正在尝试使用 JavaScript 正则表达式来实现这一点。

    var pattern =/^\d{0,3}?[\.]?\d{1,3}$/;
    if (pattern.test(amount)) {
        return true;
    }else {
        console.log('rgx Failed');
        return false;
    }

对于此示例,我将 3 视为最大整数和小数长度。
整数部分的长度可以是 0 到 3,小数部分应至少为一位数,最大为 3。但上面提到的 javascript 不起作用,整数部分允许 7 位数字。

我正在使用 inputText onKeyDown 事件调用此脚本,以便我可以检查每个按键并限制仅输入有效数量。

有效金额 : 123.123, 12.1, 1.12, .123, 1.3, .1234 等 无效金额 : 123. , 1234 等

4

4 回答 4

2

一个快速的解决方案是:

/^\d{0,3}\.\d{1,3}$/

要匹配更新的要求:

pattern.replace(/^(\d{0,3})\.?(\d{0,3})$/, function(m, g1,g2) {
    return (g1 || 0) + '.' + (g2 || 0);
})

只要输入限制为 6 位数字和可选的小数位,就可以工作

于 2013-02-07T09:28:14.343 回答
0

关于什么:

/^(\d{1,3}\.\d{1,3})|(\.\d{1,3})|(\d{1,3})$/

它不干净,但它有效。

于 2013-02-07T09:47:29.530 回答
0

试试这个....(^\d{1,3}([.]\d{1,3})?)$|(^\d{0,3}$)

更好的方法是使用前瞻?= 或负前瞻?!

谢谢

于 2013-02-07T09:48:27.897 回答
0

我使用了 primefaces-extensions inputNumber 组件,它满足了我所有的要求和条件。

最大值=9999.999"/>

Inputnumber 接受,整数部分为 4 位,小数部分为 3 位。格式化和附加零由组件本身处理。

于 2013-02-21T05:00:12.717 回答