4月 06
使用JavaScript驗證身份證號碼及其原理
文∕趙英傑
電子商務或者一般的會員註冊網站,經常需要使用身份證號碼驗證程式。身份證號碼有一定的組成規則,以台灣地區為例,首碼一定是英文字母,後面跟著代表性別的數字1或2,然後再銜接8個數字。A123456789是一個合格的身份證號碼,驗證原理如下圖所示:

底下是驗證此號碼是否合格的計算公式:

根據上圖的說明,我們可以用JavaScript的正規表達式(Regular Expression),加上簡易的字串與數學運算式,寫出如下的驗證函數:
JAVASCRIPT:
-
function checkID(idStr){
-
// 依照字母的編號排列,存入陣列備用。
-
var letters = new Array('A', 'B', 'C', 'D',
-
'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M',
-
'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
-
'X', 'Y', 'W', 'Z', 'I', 'O');
-
// 儲存各個乘數
-
var multiply = new Array(1, 9, 8, 7, 6, 5,
-
4, 3, 2, 1);
-
var nums = new Array(2);
-
var firstChar;
-
var firstNum;
-
var lastNum;
-
var total = 0;
-
// 撰寫「正規表達式」。第一個字為英文字母,
-
// 第二個字為1或2,後面跟著8個數字,不分大小寫。
-
var regExpID=/^[a-z](1|2)\d{8}$/i;
-
// 使用「正規表達式」檢驗格式
-
if (idStr.search(regExpID)==-1) {
-
// 基本格式錯誤
-
alert(\"請仔細填寫身份證號碼\");
-
return false;
-
} else {
-
// 取出第一個字元和最後一個數字。
-
firstChar = idStr.charAt(0).toUpperCase();
-
lastNum = idStr.charAt(9);
-
}
-
// 找出第一個字母對應的數字,並轉換成兩位數數字。
-
for (var i=0; i<26; i++) {
-
if (firstChar == letters[i]) {
-
firstNum = i + 10;
-
nums[0] = Math.floor(firstNum / 10);
-
nums[1] = firstNum - (nums[0] * 10);
-
break;
-
}
-
}
-
// 執行加總計算
-
for(var i=0; i<multiply.length; i++){
-
if (i<2) {
-
total += nums[i] * multiply[i];
-
} else {
-
total += parseInt(idStr.charAt(i-1)) *
-
multiply[i];
-
}
-
}
-
// 和最後一個數字比對
-
if ((10 - (total % 10))!= lastNum) {
-
alert(\"身份證號碼寫錯了!\");
-
return false;
-
}
-
return true;
-
}
文章轉載於:http://swf.com.tw/?p=94
標籤: JavaScript, 網頁
本篇文章引用網址:
|
其他隨機文章: |



