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

时间:2021-05-25

比如这次用到的我先前介绍过的Vanadium表单验证插件, 因为是E文中不存在占2个字符的字, 所以, 区分中英文字符就得自己扩展. 本文就将介绍两种区分中英文字符的方法: 利用正则和charCodeAt方法区分中英文字符.
区分中英文字符的两种方法: 正则和charCodeAt()方法@Mr.Think body{font-size:0.8em;letter-spacing:1px;font-family:\5fae\8f6f\96c5\9ed1;line-height:1.8em} div,h2,p,fieldset,legend,form,textarea,span,em,sub{margin:0;padding:0} input{font:12px/1.5 tahoma,arial,sans-serif;vertical-align:middle} h1{font-size:1em;font-weight:normal} h1 a{background:#047;padding:2px 3px;color:#fff;text-decoration:none} h1 a:hover{background:#a40000;color:#fff;text-decoration:underline} h3{color:#888;font-weight:bold;font-size:1em;margin:1em auto;position:relative} fieldset{padding:20px;border:1px solid #ccc;width:720px} fieldset legend{background:#a40000;color:#fff;text-align:center;padding:0 8px;margin-left:25px} fieldset label{display:block;padding-left:25px;line-height:40px} fieldset label input{padding:2px 3px;border:1px solid #888;width:200px;height:16px} fieldset label input:focus{border:1px solid blue}

Mr.Think的个人博客@专注前端技术,热爱PHP,崇尚简单生活.

返回文章页:区分中英文字符的两种方法: 正则和charCodeAt()方法@Mr.Think

请在如下表单中输入字符后点击表单外区域 通过正则表达式判断: 通过charCodeAt()方法判断: [Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]
正则无疑是最强大的判断各种条件的方法, 最近也在研习它, 虽然枯燥, 但仍有乐趣. 用它来判断一个双字节的中文字符也是轻而易举地. 而判断中文字符, Mr.Think也是非常推荐用这种方法的, 简单且执行效率高.
核心代码如下:
复制代码 代码如下:
regExpForm.onblur=function(){
entryVal=this.value;
entryLen=entryVal.length;
cnChar=entryVal.match(/[^\x00-\x80]/g);//利用match方法检索出中文字符并返回一个存放中文的数组
entryLen+=cnChar.length;//算出实际的字符长度
}

第二种方法是通过charCodeAt()方法判断Unicode码值, 若大于255即为中文字符(为什么? 请Google ). Mr.Think并不建议用这种方法的, 它的执行效率没有正则高, 也没有正则简单.
核心代码如下:
复制代码 代码如下:
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;

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章