我想限制用户在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等
答案 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。格式化和附加零由组件本身处理。