身份證號碼是我們每個人的身份識別證明,但是隨便輸入一個亂碼的號碼都會被系統認可,因此我們需要使用JavaScript對身份證號碼進行校驗,確保數據的正確性。本文將詳細介紹JavaScript實現身份證號校驗的方法。
一、正則表達式校驗
使用正則表達式進行身份證號碼校驗是一種非常常見的方法,其代碼如下:
function ValidateIdCardNum(idCardNum) { var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; if (reg.test(idCardNum) === false) { return false; } else { return true; } }
上述代碼中使用了正則表達式來校驗身份證號碼。使用正則表達式可以精確地確定身份證號碼的格式是否正確,而不會誤判。其中,^\d{15}$
表示身份證號碼為15位數字,^\d{18}$
表示身份證號碼為18位數字,^\d{17}(\d|X|x)$
表示身份證號碼為17位數字加一個大寫或小寫字母X。
如果校驗結果為false,說明輸入的身份證號碼格式不正確;如果校驗結果為true,說明輸入的身份證號碼格式正確。
二、根據省市區代碼進行校驗
通過對身份證號碼中的前6位進行解析,我們可以得到身份證號碼所屬的省市區信息,從而校驗身份證號碼的正確性。具體代碼如下:
function ValidateIdCardNum(idCardNum) { // 省市區代碼,來源於國家統計局官網(http://www.stats.gov.cn/) var cityCodes = { '11': '北京', '12': '天津', '13': '河北', '14': '山西', '15': '內蒙古', '21': '遼寧', '22': '吉林', '23': '黑龍江', '31': '上海', '32': '江蘇', '33': '浙江', '34': '安徽', '35': '福建', '36': '江西', '37': '山東', '41': '河南', '42': '湖北', '43': '湖南', '44': '廣東', '45': '廣西', '46': '海南', '50': '重慶', '51': '四川', '52': '貴州', '53': '雲南', '54': '西藏', '61': '陝西', '62': '甘肅', '63': '青海', '64': '寧夏', '65': '新疆', '71': '台灣', '81': '香港', '82': '澳門', '91': '國外' }; // 提取身份證號碼中的前6位 var provinceCode = idCardNum.substring(0, 2); // 判斷身份證號碼所屬省份是否正確 if (cityCodes[provinceCode] === undefined) { return false; } else { return true; } }
上述代碼中,我們使用一個對象cityCodes
記錄了每個省份的代碼和名稱,然後提取輸入的身份證號碼中的前兩位,判斷其是否在這個對象中出現過,從而判斷身份證號碼是否為有效號碼。
三、根據校驗碼進行校驗
身份證號碼最後一位是校驗碼,其計算方式為使用前17位計算出一個校驗碼,然後和身份證號碼的最後一位進行比較。如果相同,則校驗通過,否則校驗失敗。具體計算過程如下:
function ValidateIdCardNum(idCardNum) { // 每位數字對應的權重值 var weightFactors = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; // 餘數和餘數對應的校驗碼 var checkCodes = { 0: '1', 1: '0', 2: 'X', 3: '9', 4: '8', 5: '7', 6: '6', 7: '5', 8: '4', 9: '3', 10: '2' }; // 獲取身份證號碼的前17位 var idCardNum17 = idCardNum.substring(0, 17); // 計算身份證號碼的校驗碼 var sum = 0; for (var i = 0; i < 17; i++) { sum += parseInt(idCardNum17.charAt(i)) * weightFactors[i]; } var checkCode = checkCodes[sum % 11]; // 比較計算出的校驗碼與身份證號碼的最後一位 if (checkCode === idCardNum.charAt(17)) { return true; } else { return false; } }
上述代碼中,我們使用一個數組weightFactors
存儲每位數字所對應的權重值,然後將身份證號碼的前17位和weightFactors
中的權重值相乘,得到一個總和,然後用總和對11取模,得到一個餘數。根據餘數,我們可以從一個對象checkCodes
中找到對應的校驗碼,並比對其與身份證號碼的最後一位是否一致,從而判斷身份證號碼是否為有效號碼。
四、利用第三方庫校驗
除了手動編寫校驗方法外,我們還可以利用第三方庫來進行身份證號碼的校驗。常用的庫包括jQuery和Lodash等。具體使用方法可以查看官方文檔。
例如,在使用jQuery進行身份證號碼校驗時,代碼如下:
function ValidateIdCardNum(idCardNum) { if ($.idcard.validate(idCardNum) === false) { return false; } else { return true; } }
上述代碼中,我們使用了jQuery的idcard庫來進行身份證號碼校驗。如果校驗結果為false,說明輸入的身份證號碼格式不正確;如果校驗結果為true,說明輸入的身份證號碼格式正確。
五、總結
本文介紹了JavaScript實現身份證號校驗的四種方法,分別為正則表達式校驗、根據省市區代碼進行校驗、根據校驗碼進行校驗和利用第三方庫進行校驗。不同的方法有不同的適用場景,我們可以根據具體情況選擇合適的方法來進行身份證號碼的校驗。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/301729.html