JavaScript 驗證身份證
身份證是一個人身份的重要證明,其格式由18位數(shù)字加一個字母或數(shù)字組成,其中最后一位可能為 X 或 x。身份證號碼不僅能夠反映人的出生日期、性別、籍貫、居住地等信息,還可以作為重要的證件進行驗證身份。而為了確保輸入的身份證號碼正確有效,我們可以使用 JavaScript 編寫校驗代碼。
身份證號碼的校驗規(guī)則如下:
1. 身份證號碼長度為18位; 2. 前17位都是數(shù)字,最后一位可能為 X 或 x; 3. 出生日期必須為合法日期; 4. 身份證校驗碼(最后一位)必須符合國家標準 GB 11643-1999。
以下是一個簡單的 JavaScript 代碼示例,實現(xiàn)身份證號碼的合法性判斷:
function checkIDCard(id) { var idcard = String(id).toUpperCase(); if(!(/(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(idcard))) return false; var province = idcard.substr(0,2); var year = idcard.substr(6,4); var month = idcard.substr(10,2); var day = idcard.substr(12,2); var date = new Date(year+"/"+month+"/"+day); if(date.getFullYear()!=year||date.getMonth()+1!=month||date.getDate()!=day) return false; var weight = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]; var codes = "10X98765432"; var sum = 0; for(var i=0;i<17;i++){ sum+=parseInt(idcard[i])*weight[i]; } if(codes[sum%11]!=idcard[17]) return false; return true; }
該函數(shù)首先會將傳入的身份證號碼轉(zhuǎn)化為大寫字符串,然后使用正則表達式判斷該字符串是否符合身份證號碼的基本格式。如果未通過基本格式驗證,則直接返回 false,表示該身份證號碼不合法。
如果身份證號碼符合基本格式要求,則繼續(xù)進行進一步的校驗。該函數(shù)會從身份證號碼中截取出省份、出生年月日等信息,并根據(jù)這些信息判斷出生日期是否合法。如果出生日期不合法,則返回 false,表示該身份證號碼不合法。
接下來,該函數(shù)會使用國家標準規(guī)定的加權求和算法計算身份證校驗碼。如果計算的結果與身份證號碼中的校驗碼不一樣,則返回 false,表示該身份證號碼不合法。
最后,如果身份證號碼通過了以上所有的校驗,則該函數(shù)會返回 true,表示該身份證號碼是合法的。
在實際應用中,我們可以將該函數(shù)與 HTML 表單的提交事件進行綁定,從而在用戶提交表單時即時進行身份證號碼的合法性校驗。