日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2024/4/17 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 区分中英文字符的两种方法: 正则和charCodeAt()方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近在為項(xiàng)目寫登錄注冊(cè)系列頁面, 表單驗(yàn)證無疑是不可缺少的部分, 在這個(gè)jQ插件滿天飛的web年代, 表單驗(yàn)證倒也不是難事. 但再好的插件, 也并不能做到十全十美, 比如這次用到的我先前介紹過的Vanadium表單驗(yàn)證插件, 因?yàn)槭荅文中不存在占2個(gè)字符的字, 所以, 區(qū)分中英文字符就得自己擴(kuò)展. 本文就將介紹兩種區(qū)分中英文字符的方法: 利用正則和charCodeAt方法區(qū)分中英文字符.點(diǎn)此查看DEMO
正則無疑是最強(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即為中文字符(為什么? 請(qǐng)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會(huì)累加字符值
?? ? ? ? ? ?
}
?? ? ? ?
}
?? ? ? ?
entryLen+=cnArr.length;

原文發(fā)布于Mr.Think的博客:
http://mrthink.net/js-cn-en-character/ ,轉(zhuǎn)載請(qǐng)注明出處.

轉(zhuǎn)載于:https://www.cnblogs.com/mrthink/archive/2010/10/26/1861673.html

總結(jié)

以上是生活随笔為你收集整理的区分中英文字符的两种方法: 正则和charCodeAt()方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。