在Ext JS中,以下maskRe
不起作用,因为它没有在文本字段上放置最多5个字符的限制,为什么?
{
xtype: 'textfield',
fieldLabel: '* Zip Code',
allowBlank: false,
maskRe: /\d{0,5}/i
}
答案 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