如何使用maskRe限制ExtJs Textfield仅接受数字.(应接受正数,负数,整数和十进制数.)

Har*_*hal 3 javascript regex validation extjs textfield

我需要配置我的ExtJs文本字段只接受可以是正数,负数,整数和最多2位小数的小数.我试着用maskeRe正则表达式/^-?[0-9]\d*(\.\d+)?$/.但它只接受正整数.用户不应该键入受限制的字符.它也应该只在第一个地方接受' - '和'.' 介于两者之间,只有一次.

所以它应该接受:10,-10,10.12,-10.34等

链接到我的小提琴

谢谢

Wik*_*żew 7

改变你maskRe

maskRe: /[0-9.-]/,
validator: function(v) {
    return /^-?[0-9]*(\.[0-9]{1,2})?$/.test(v)? true : 'Only positive/negative float (x.yy)/int formats allowed!';
},
Run Code Online (Sandbox Code Playgroud)

关键是你允许一些字符使用maskRe(不是值本身)并验证字符串输入validator.

图案细节:

  • ^ - 字符串的开头
  • -? - 一个可选的连字符
  • [0-9]* - 零个或多个数字
  • (\.[0-9]{1,2})? - 可选的序列
    • \. - 一个点
    • [0-9]{1,2} - 任何1或2位数字
  • $ - 字符串结尾.