在js中直接使用字符串的length属性,返回string中的中文是1,这在有些情况下不是我们想要的,下面提供一个方法,判断出中文,然后返回长度。
var getByteLen = function (str) {
var len = 0;
for (var i = 0; i < str.length; i++) {
if (str[i].match(/[^x00-xff]/ig) != null){ //判断全角
//if (str[i].match(/[u4E00-u9FA5]/g) != null) //判断是否为中文
len += 2;
}else{
len += 1;
};
}
return len;
}
var str = '2ga哈哈245滴很3地h';
getByteLen(str); //18
代码中的两种判断方式都行, 其中 [^x00-xff] 表示ASCII 编码不在0-255的其他字符汉字或者全角字符之类的。
另外,判断是否中文的方法还有很多,大家可以自行搜索一下。
例1,判断输入是否为中文的函数
function ischinese(s){
var ret=true;
for(var i=0;i
return ret;
}
例2,中文判断函数,允许生僻字用英文“*”代替。返回true表示是符合条件,返回false表示不符合。
function isChinese(str){
var badChar ="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
badChar += "abcdefghijklmnopqrstuvwxyz";
badChar += "0123456789";
badChar += " "+" ";//半角与全角空格
badChar += "不包含*或.的英文符号
if(""==str){
return false;
} // www.111com.net
for(var i=0;i var c = str.charAt(i);//字符串str中的字符
if(badChar.indexOf(c) > -1){
return false;
}
}
return true;
}
例3,数字判断函数,返回true表示是全部数字,返回false表示不全部是数字
function isNumber(str){
if(""==str){
return false;
}
var reg = /D/;
return str.match(reg)==null;
}