2013年3月10日 星期日

在Javascript中判斷中文字

小編日前在寫網頁表單時,想要驗證文字訊息,

例如: 驗證中文字、日文、或英數符號等,

當然,英數符號可以用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 《花蓮泛舟、住宿套裝行程,團體購票優惠中》
----------------------------------------------------------------------------------------------------------------------------------------------------------------

沒有留言:

張貼留言