作家
登录

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

作者: 来源:www.28hudong.com 2013-03-30 01:13:04 阅读 我要评论

比如这次用到的我先前介绍过的Vanadium表单验证插件, 因为是E文中不存在占2个字符的字, 所以, 区分中英文字符就得自己扩展. 本文就将介绍两种区分中英文字符的方法: 利用正则和charCodeAt方法区分中英文字符. 区分中英文字符的两种方法: 正则和charCodeAt()方法@Mr.Think /*reset css*/ body{font-size:0.8em;letter-spacing:1px;font-family:5fae8f6f96c59ed1;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} /*demo css*/ 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;

  推荐阅读

  深入理解JavaScript定时机制

例如 复制代码 代码如下: setTimeout(function() { alert('你好!'); }, 0); setInterval(callbackFunction, 100); 认为setTimeout中的问候方法会立即被执行,因为这并不是凭空而说,而是JavaScript API文档明确定义>>>详细阅读


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

地址:http://www.17bianji.com/kaifa2/JS/25497.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)