extjs输入文本maskRe

时间:2010-04-08 23:11:48

标签: regex extjs

在Ext JS中,以下maskRe不起作用,因为它没有在文本字段上放置最多5个字符的限制,为什么?

{
  xtype: 'textfield',
  fieldLabel: '* Zip Code',
  allowBlank: false,
  maskRe: /\d{0,5}/i
}

4 个答案:

答案 0 :(得分:7)

昨天做了同样的验证并遇到了类似的问题:-)
你是用正则表达式掩盖了maskRe。正则表达式将验证整个字符串,maskRe将过滤char输入。因此,在正则表达式中指定完整的验证正则表达式,并且只在maskRe中指定允许使用字符的字符类 - 这不是必需的,但如果您不希望用户键入AAAAA只是为了被告知它是错误的,则会有所帮助。

我不会使用NumberField,因为您尝试验证的不是数字,而是数字代码,不允许使用负数。另外,不是允许0-5个字符,为什么不允许5个字符?这也不允许使用blanktext,因此不需要allowBlank:false。

试试这个

regex: /^\d{5}$/i,
maskRe: /\d/i

HTH

答案 1 :(得分:5)

您没有使用maxLength配置的任何原因?为了确保数值,您可以使用NumberField而不是TextField。

答案 2 :(得分:1)

我不熟悉maskRe,但我的猜测是你需要anchor正则表达式:

maskRe: /^\d{0,5}$/

答案 3 :(得分:0)

如果你需要更复杂的正则表达式,而不仅仅是允许的字符列表,你需要使用'vtype' http://www.extjs.com/forum/showthread.php?43510-TextField-and-MaskRe&p=206015#post206015