区分中英文字符的两种方法: 正则和charCodeAt()方法
生活随笔
收集整理的這篇文章主要介紹了
区分中英文字符的两种方法: 正则和charCodeAt()方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近在為項目寫登錄注冊系列頁面, 表單驗證無疑是不可缺少的部分, 在這個jQ插件滿天飛的web年代, 表單驗證倒也不是難事. 但再好的插件, 也并不能做到十全十美, 比如這次用到的我先前介紹過的Vanadium表單驗證插件, 因為是E文中不存在占2個字符的字, 所以, 區分中英文字符就得自己擴展. 本文就將介紹兩種區分中英文字符的方法: 利用正則和charCodeAt方法區分中英文字符.點此查看DEMO
正則無疑是最強大的判斷各種條件的方法, 最近也在研習它, 雖然枯燥, 但仍有樂趣. 用它來判斷一個雙字節的中文字符也是輕而易舉地. 而判斷中文字符, Mr.Think也是非常推薦用這種方法的, 簡單且執行效率高.
核心代碼如下:
?? ? ? ?entryVal=this.value;
?? ? ? ?entryLen=entryVal.length;
?? ? ? ?cnChar=entryVal.match(/[^\x00-\x80]/g);//利用match方法檢索出中文字符并返回一個存放中文的數組
?? ? ? ?entryLen+=cnChar.length;//算出實際的字符長度
?? ?}
第二種方法是通過charCodeAt()方法判斷Unicode碼值, 若大于255即為中文字符(為什么? 請Google?). Mr.Think并不建議用這種方法的, 它的執行效率沒有正則高, 也沒有正則簡單.
核心代碼如下:
?? ? ? ?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;
原文發布于Mr.Think的博客: http://mrthink.net/js-cn-en-character/ ,轉載請注明出處.
轉載于:https://www.cnblogs.com/mrthink/archive/2010/10/26/1861673.html
總結
以上是生活随笔為你收集整理的区分中英文字符的两种方法: 正则和charCodeAt()方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vs2008.net 单元测试NUnit
- 下一篇: make的自动变量和预定义变量