Regex Extjs 5验证-输入4个字符后验证

Regex Extjs 5验证-输入4个字符后验证,regex,validation,extjs,Regex,Validation,Extjs,我当前正在尝试验证格式中的字符串 1个字符(A-Z)和3个字符(A-Z 0-9)(字母字符后跟3个字母数字) 这是我的自定义vtype: customalphanumeric: function( return (/^([A-Za-z]){1}([A-Za-z0-9]){3}$/).test(v); }, customalphanumericText: 'Please enter 1 Alpha character followed by 3 alphanumeric character

我当前正在尝试验证格式中的字符串

1个字符(A-Z)和3个字符(A-Z 0-9)(字母字符后跟3个字母数字)

这是我的自定义vtype:

customalphanumeric: function(
    return (/^([A-Za-z]){1}([A-Za-z0-9]){3}$/).test(v);
},
customalphanumericText: 'Please enter 1 Alpha character followed by 3 alphanumeric characters',
customalphanumericMask: /([A-Za-z0-9])/
当我在框中输入任何字母时,文本显示“请输入1个字母字符,后跟3个字母数字字符”

如何让它等待输入4个字符

我试过这个:

if (v.length == 4) {
    return (/^([A-Za-z]){1}([A-Za-z0-9]){3}$/).test(v);
}
else {
    return true;
}

但这允许使用少于4个字符的短语。任何帮助都将不胜感激。

你几乎得到了

if (v.length == 4) {
    return (/^([A-Za-z]){1}([A-Za-z0-9]){3}$/).test(v);
}
else {
    //return true;
    return false;
}

您也可以更改else语句中返回的文本,我认为这不会按您希望的方式工作,因为如果错误在达到4个字符之前不显示,则表示该表单在此之前有效,使用您表单的任何人都可以提交它

您可以添加一个minLength:4属性,并正确显示所有验证:

Ext.application({
    name : 'MyApp',

    launch : function() {
        var customRegEx = /^([A-Z]){1}([A-Z0-9]){3}$/i;
        Ext.apply(Ext.form.field.VTypes, {
            customtest: function(val, field) {
                return customRegEx.test(val);
            },
            customtestText: 'Please enter 1 Alpha character followed by 3 alphanumeric characters',
            customtestMask: /([A-Z0-9])/
        });

        Ext.create('Ext.panel.Panel',{
            title: 'Test Panel',
            renderTo: Ext.getBody(),
            items: [{
                xtype: 'textfield',
                vtype: 'customtest',
                minLength: 4
            }]
        })
    }
});

我明白你的意思。这是一个更好的解决方案。谢谢