例如: 驗證中文字、日文、或英數符號等,
當然,英數符號可以用isNaN函式、或用String.fromCharCode將字元轉成ASCII來判斷其涵蓋範圍,
那,中文字或日文等其他文字該怎麼辦呢?
發現Javascript似乎沒有現成的函式可以使用,
那麼,該怎麼實現判斷呢?
第一個想到的當然就是unicode
首先要先知道各種文字的unicode範圍,從google搜尋到的資料結果,整理了一下如下
漢字:[0x4e00,0x9fa5](或十進制[19968,40869]) 數字:[0x30,0x39](或十進制[48, 57]) 全形數字:[0xff10,0xff19] 小寫字母:[0x61,0x7a](或十進制[97, 122]) 大寫字母:[0x41,0x5a](或十進制[65, 90]) 全形小寫字母:[0xff41,0xff5a] 全形大寫字母:[0xff21,0xff3a] 空白:0x0020 日文平假名:3040-309F 日文片假名:30A0-30FF 日文片假名拼音:31F0-31FF接下來,該怎麼把文字轉成unicode呢? JS似乎又沒有現成的函式可以轉,但小編蒐集資料的結果,找到了網友寫的一個簡單的方式可以實現,如下
function toUnicode(theString) { var unicodeString = ''; for (var i=0; i < theString.length; i++) { var theUnicode = theString.charCodeAt(i).toString(16).toUpperCase(); while (theUnicode.length < 4) { theUnicode = '0' + theUnicode; } theUnicode = '\\u' + theUnicode; unicodeString += theUnicode; } return unicodeString; }原文:http://buildingonmud.blogspot.tw/2009/06/convert-string-to-unicode-in-javascript.html
最後判斷的方式如下
var n = toUnicode(text).split('\\u'); for(var i in n) { if(n[i]!='') { var num=parseInt(n[i]); if( num>=parseInt('4e00',16) && num<=parseInt('9fa5',16) ) { return "是中文" } } }大功告成~
----------------------------------------------------------------------------------------------------------------------------------------------------------------
《希文資訊-主機架設》 www.linuxpro.com.tw 《電腦銷售 電腦維修 Linux維護》
《希文資訊-網頁設計》 www.webpro.com.tw 《網頁設計 程式設計 空間租用》
《5185我要買屋售屋網》 www.5185.com.tw 《我要買屋 我要買屋 房屋免費刊登 屋主房仲最佳銷售平台》
《8585買屋賣屋售屋網》 www.8585.com.tw 《買屋賣屋租屋全部免費刊登 屋主房仲最佳銷售平台》
《SEVEN愛心購物網》 www.seven.com.tw 《商品免費上架,大家一起來做公益》
《5247我愛社區》 www.5247.tw 《社區網站 社區財務管理系統,立即申請免費使用》
《太平洋泛舟》 funjoy.seven.com.tw 《花蓮泛舟、住宿套裝行程,團體購票優惠中》
----------------------------------------------------------------------------------------------------------------------------------------------------------------
沒有留言:
張貼留言