区分中英文字符的两种方法(正则和charCodeAt())

来源:互联网 发布:淘宝天堂伞正品 编辑:程序博客网 时间:2024/06/05 03:50

1. 正则:

regExpForm.onblur=function(){
entryVal=this.value;
entryLen=entryVal.length;
cnChar=entryVal.match(/[^\x00-\x80]/g);//利用match方法检索出中文字符并返回一个存放中文的数组
entryLen+=cnChar.length;//算出实际的字符长度
}

\xhh,匹配的是一个十六进制字符hh.(注:h取值范围是0-9a-f)^\x00-\x80(注意有个非) 是全角字符的范围这个是通过正则来获取value中的全角字符

2. charCodeAt

entryVal=this.value;
entryLen=entryVal.length;
for(var i=0;i<entryVal.length;i++){
if(entryVal.charCodeAt(i)>255){//遍历判断字符串中每个字符的Unicode码,大于255则为中文
cnArr.push(entryVal[i]);//讲符合条件的值插入到中文字符数组中
//注意一个小bug,push是向数组的末尾添加一个或多个元素并返回新的长度,所以未刷新的情况下反复blur会累加字符值
}
}
entryLen+=cnArr.length;

0 0
原创粉丝点击