正则表达式以限制货币的长度和模式

时间:2013-02-07 09:25:52

标签: javascript primefaces

我想限制用户在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 个答案:

答案 0 :(得分: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位数和可选的小数位

就会起作用

答案 1 :(得分:0)

怎么样:

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

它不干净,但它有效。

答案 2 :(得分:0)

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

更好的是使用前瞻?=或否定前瞻?!

由于

答案 3 :(得分:0)

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

                包括maxValue = 9999.999" />

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