日期:2014-05-18  浏览次数:20769 次

ExtJS 校验关于包含中文的“字节长”
ExtJS 校验关于包含中文的“字节长”
这里主义是字节长度


var text = Ext.create('Ext.form.TextField',{
     fieldLabel:'名称',
     labelAlign:'right',
     width:400,
     id:'text',
     name:'text',
     allowBlank:'true',
     maxLength:10,
     minLength:1,
     regex:/[^\x00-\xFF]/,
     regex:'名称最长不能超过10个字节,其中可以包括汉字'



})

 其实maxLength:10和minLength:1已经能控制字符不超过10个字符 ,但是不能控制总字节不超过10个,因为一个汉字相当于两个字节 

匹配双字节字符(包括汉字在内):[^\x00-\xff] 
这个正则表达式regex:/[^\x00-\xFF]/放在这总觉得不对

请大神指正 
并给出正确的正则表达式!!!
ExtJS JS 正则表达式

------解决方案--------------------
function Checkstrlenght(chars) {
    var sum = 0;
    for ( var i = 0; i < chars.length; i++) {
        var c = chars.charCodeAt(i);
        if ((c >= 0x0001 && c <= 0x007e) 
------解决方案--------------------
 (0xff60 <= c && c <= 0xff9f)) {
            sum++;
        } else {
            sum += 2;
        }
    }
    return sum;
}

Ext.apply(Ext.form.VTypes, {lengthRange:function (v) {
if(Checkstrlenght(v)>10){
return false;
}
return true
}, ipText:"总字节数不能超过10个(汉字算2个)"});

在TextField里面加上 vtype : 'lengthRange',