【www.gdgbn.com--正则表达式】

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


 请在如下表单中输入字符后点击表单外区域
 
 



<script>

window.onload=function(){
 var regexpform=document.getelementbyid("regexp");
 var charcodeat=document.getelementbyid("charcodeat");
 var entryval=null;//输入的值
 var cnchar=null;//中文字符
 var cnarr=new array();//存放中文字符的数组
 var entrylen=null;//输入字符的长度
 //通过正则区分中英文字符--mr.think推荐方法
 regexpform.onblur=function(){
  entryval=this.value;
  entrylen=entryval.length;
  cnchar=entryval.match(/[^x00-x80]/g);//利用match方法检索出中文字符并返回一个存放中文的数组
  if(cnchar!=null){
   entrylen+=cnchar.length;//算出实际的字符长度
   alert("你输入了 "+cnchar.length+" 个中文字符;n它们分别是: "+cnchar+" ;n共计输入了 "+entrylen+" 个字符.");
  }else{
   entrylen=0;
   alert("你没有输入任何中文字符! ");
  }
 }
 //通过charcodeat区分中英文字符
 charcodeat.onblur=function(){
  entryval=this.value;
  entrylen=entryval.length;
  for(var i=0;i    if(entryval.charcodeat(i)>255){//遍历判断字符串中每个字符的unicode码,大于255则为中文
    cnarr.push(entryval[i]);//讲符合条件的值插入到中文字符数组中
    //注意一个小bug,push是向数组的末尾添加一个或多个元素并返回新的长度,所以未刷新的情况下反复blur会累加字符值
   }
  }
  entrylen+=cnarr.length;
  alert("你输入了 "+cnarr.length+" 个中文字符;n它们分别是: "+cnarr+" ;n共计输入了 "+entrylen+" 个字符.");
 }
}
</script>


正则无疑是最强大的判断各种条件的方法, 最近也在研习它, 虽然枯燥, 但仍有乐趣. 用它来判断一个双字节的中文字符也是轻而易举地. 而判断中文字符, mr.think也是非常推荐用这种方法的, 简单且执行效率高.


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

正则无疑是最强大的判断各种条件的方法, 最近也在研习它, 虽然枯燥, 但仍有乐趣. 用它来判断一个双字节的中文字符也是轻而易举地. 而判断中文字符, mr.think也是非常推荐用这种方法的, 简单且执行效率高.

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

本文来源:http://www.gdgbn.com/aspjiaocheng/29688/