问题描述: 注册页面,注册人名称允许中文不超过15字英文不能超过30字
问题分析: 一个汉字=2个字节,一个英文字符=1个字节;汉字为双字节字符,英文为单字节字符
解决方式: 循环字符串,根据单双字节分别累加得出字符串长度.
eg1:
code: javascript
//获取字符串最终长度,区分中英文 function len(str) { var len = 0; if (str != null && str.length > 0) { for (var i=0; i<str.length; i++) { var c = str.charCodeAt(i);
//单字节加1
if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) { //非中文长度1 len++; } else {
//双字节加2//非中文长度2 len+=2; } } } return len; }
eg2:
把双字节的替换成两个单字节的然后再获得长度
var str = "我叫mt我叫mt"; if (typeof str != "string")str += ""; var len= str.replace(/[^\x00-\xff]/g,"01").length; if(len>30){ YUI.Validator.TIPS['companyname3'].error = "最多输入15个中文字符或30个英文,空格和数字,不能以空格开头。" }