公民身份號碼是一系列組合碼,由十七位數字本體碼和一位校驗碼組成。
1、將身份證號碼前17位數分別乘以不同的係數。從第一位到第十七位的係數分別為:【7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2】舉例:某女生的身份證號碼為【36073119960518294x】2、將這17位數字和係數相乘的結果相加
3、用加出來和除以11,看餘數是多少?
4、餘數只可能有【0-1-2-3-4-5-6-7-8-9-10】這11個數字。其分別對應的最後一位身份證的號碼為【1-0-x-9-8-7-6-5-4-3-2】
5、通過上面得知如果餘數是2,就會在身份證的第18位數字上出現羅馬數字的ⅹ。如果餘數是10,身份證的最後一位號碼就是2
①【(3*7)+(6*9)+(0*10)+(7*5)+(3*8)+(1*4)+(1*2)+(9*1)+(9*6)+(6*3)+(0*7)+(5*9)+(1*10)+(8*5)+(2*8)+(9*4)+(4*2)】= 376
② 376除以11等於34餘2
③ 餘數2對應【1-0-x-9-8-7-6-5-4-3-2】的校驗碼剛好是x
④ 該身份證號碼正確
判斷身份證號碼第17位,奇數代表男性, 偶數代表女性【36073119960518294x】:4為偶數,女性
【53010219200508011x】:1為奇數, 男性
function istrueidcard(idcard) ((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d$)|(^[1-9]\d[1-9]\d((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d)|\dx)$)$/;
let wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1];// 加權因子
let validecode = [1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2];// 身份證驗證位值,10代表x
let sum = 0; // 宣告加權求和變數
let remainder // 餘數
let lastcode = idcard[17] // 最後一位
// 將最後位為x的驗證碼替換為10方便後續操作
if (lastcode == 'x' || lastcode == 'x')
// 校驗身份證號碼
if (!mainland.test(idcard))
// 校驗身份證最後一位
for (let i = 0; i < 17; i++)
// 得到餘數
remainder = sum % 11;
// 判斷校驗位和對應驗證位是否相等
if (lastcode == validecode[remainder]) else
// 判斷性別
let ***code = idcard[16]
if (***code % 2 == 0) else
}istrueidcard('36073119960518294x')
身份證號碼校驗
中國居民身份證號碼編碼規則 中國居民身份證校驗碼演算法 都包含 author liuwei date 2020 11 19 身份證校驗工具 public class idnumutil 定義判別使用者身份證號的正規表示式 15位或者18位,最後一位可以為字母 string regularexpres...
Oracle 身份證號碼校驗
今天來了身份證校驗的需求,想在oracle中校驗後將錯誤資料查詢出來。於是我在網上查到了身份證校驗的oracle函式。但是發現一些正確的身份證號也未校驗通過!後來經過千辛萬苦的努力終於發現了,網上給的函式中判斷是否是閏年的 substrb 函式應該從第7為開始擷取,而不是第6位!還有要注意最後一位校...
JS校驗身份證號碼
function isidcardno num d 0 9 x test num 驗證前2位,城市符合 var acity if acity parseint num.substr 0,2 null alert 城市 acity parseint num.substr 0,2 下面分別分析出生日期和...