2010-04-08 71 views
5

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

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

跨张贴在这里http://www.extjs.com/forum/showthread.php?t=96609 – 2010-04-09 01:26:57

+0

是否'maskRe'支持'i'修改?尝试没有。 – 2010-04-09 01:28:38

回答

1

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

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

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

7

由相同的昨天确认,不得不:-)
类似的问题你弄错maskRe与正则表达式。正则表达式将验证整个字符串,maskRe将过滤字符输入。因此在正则表达式中指定完整的验证正则表达式,并在maskRe中仅指定允许使用字符的字符类 - 如果您不希望用户输入AAAAA只是为了告知它是错误的,这不是必需的,但是很有用。

我不会使用NumberField,因为您试图验证的不是真正的数字,而是数字代码,并且不允许使用负数。另外,为什么不准许5个字符,而不是0-5个字符?这也不允许使用空格,所以allowBlank:false是不必要的。

试试这个

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

HTH