區(qū)分中英文字符的兩種方法(正則和charCodeAt())
更新時(shí)間:2010年11月05日 18:31:25 作者:
最近在為項(xiàng)目寫登錄注冊系列頁面, 表單驗(yàn)證無疑是不可缺少的部分, 在這個(gè)jQ插件滿天飛的web年代, 表單驗(yàn)證倒也不是難事. 但再好的插件, 也并不能做到十全十美
比如這次用到的我先前介紹過的Vanadium表單驗(yàn)證插件, 因?yàn)槭荅文中不存在占2個(gè)字符的字, 所以, 區(qū)分中英文字符就得自己擴(kuò)展. 本文就將介紹兩種區(qū)分中英文字符的方法: 利用正則和charCodeAt方法區(qū)分中英文字符.
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
正則無疑是最強(qiáng)大的判斷各種條件的方法, 最近也在研習(xí)它, 雖然枯燥, 但仍有樂趣. 用它來判斷一個(gè)雙字節(jié)的中文字符也是輕而易舉地. 而判斷中文字符, Mr.Think也是非常推薦用這種方法的, 簡單且執(zhí)行效率高.
核心代碼如下:
regExpForm.onblur=function(){
entryVal=this.value;
entryLen=entryVal.length;
cnChar=entryVal.match(/[^\x00-\x80]/g);//利用match方法檢索出中文字符并返回一個(gè)存放中文的數(shù)組
entryLen+=cnChar.length;//算出實(shí)際的字符長度
}
第二種方法是通過charCodeAt()方法判斷Unicode碼值, 若大于255即為中文字符(為什么? 請Google ). Mr.Think并不建議用這種方法的, 它的執(zhí)行效率沒有正則高, 也沒有正則簡單.
核心代碼如下:
entryVal=this.value;
entryLen=entryVal.length;
for(var i=0;i<entryVal.length;i++){
if(entryVal.charCodeAt(i)>255){//遍歷判斷字符串中每個(gè)字符的Unicode碼,大于255則為中文
cnArr.push(entryVal[i]);//講符合條件的值插入到中文字符數(shù)組中
//注意一個(gè)小bug,push是向數(shù)組的末尾添加一個(gè)或多個(gè)元素并返回新的長度,所以未刷新的情況下反復(fù)blur會累加字符值
}
}
entryLen+=cnArr.length;
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
正則無疑是最強(qiáng)大的判斷各種條件的方法, 最近也在研習(xí)它, 雖然枯燥, 但仍有樂趣. 用它來判斷一個(gè)雙字節(jié)的中文字符也是輕而易舉地. 而判斷中文字符, Mr.Think也是非常推薦用這種方法的, 簡單且執(zhí)行效率高.
核心代碼如下:
復(fù)制代碼 代碼如下:
regExpForm.onblur=function(){
entryVal=this.value;
entryLen=entryVal.length;
cnChar=entryVal.match(/[^\x00-\x80]/g);//利用match方法檢索出中文字符并返回一個(gè)存放中文的數(shù)組
entryLen+=cnChar.length;//算出實(shí)際的字符長度
}
第二種方法是通過charCodeAt()方法判斷Unicode碼值, 若大于255即為中文字符(為什么? 請Google ). Mr.Think并不建議用這種方法的, 它的執(zhí)行效率沒有正則高, 也沒有正則簡單.
核心代碼如下:
復(fù)制代碼 代碼如下:
entryVal=this.value;
entryLen=entryVal.length;
for(var i=0;i<entryVal.length;i++){
if(entryVal.charCodeAt(i)>255){//遍歷判斷字符串中每個(gè)字符的Unicode碼,大于255則為中文
cnArr.push(entryVal[i]);//講符合條件的值插入到中文字符數(shù)組中
//注意一個(gè)小bug,push是向數(shù)組的末尾添加一個(gè)或多個(gè)元素并返回新的長度,所以未刷新的情況下反復(fù)blur會累加字符值
}
}
entryLen+=cnArr.length;
相關(guān)文章
原生js實(shí)現(xiàn)隨機(jī)點(diǎn)名功能
這篇文章主要為大家詳細(xì)介紹了原生js實(shí)現(xiàn)隨機(jī)點(diǎn)名功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11
js傳各種類型參數(shù)到Controller層的整理方式
這篇文章主要介紹了js傳各種類型參數(shù)到Controller層的整理方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
JavaScript數(shù)組隨機(jī)排列實(shí)現(xiàn)隨機(jī)洗牌功能
這篇文章主要介紹了JavaScript數(shù)組隨機(jī)排列實(shí)現(xiàn)隨機(jī)洗牌功能的方法,涉及javascript中基于list.sort方法實(shí)現(xiàn)數(shù)組隨機(jī)排列的技巧,可應(yīng)用于隨機(jī)洗牌,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-03-03
JavaScript設(shè)計(jì)模式之工廠方法模式介紹
這篇文章主要介紹了JavaScript設(shè)計(jì)模式之工廠方法模式介紹,本文講解了簡單工廠模式、多個(gè)工廠方法模式等內(nèi)容,需要的朋友可以參考下2014-12-12
使用wxapp-img-loader自定義組件實(shí)現(xiàn)微信小程序圖片預(yù)加載功能
由于微信小程序沒有提供類似 Image 這樣的 JS 對象,要實(shí)現(xiàn)圖片的預(yù)加載要麻煩一些,wxapp-img-loader自定義組件可以在微信小程序中實(shí)現(xiàn)圖片預(yù)加載功能,需要的朋友可以參考下2018-10-10
微信小程序?qū)崿F(xiàn)頁面浮動(dòng)導(dǎo)航
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)頁面浮動(dòng)導(dǎo)航,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-01-01
用js實(shí)現(xiàn)小球的自由移動(dòng)代碼
本篇文章小編為大家介紹,用js實(shí)現(xiàn)小球的自由移動(dòng)代碼。需要的朋友參考下2013-04-04

