2010-04-08 36 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