Skip to content

Instantly share code, notes, and snippets.

@shepherdwind
Created June 6, 2014 11:54
Show Gist options
  • Save shepherdwind/fd75dbda4f81be714dd5 to your computer and use it in GitHub Desktop.
Save shepherdwind/fd75dbda4f81be714dd5 to your computer and use it in GitHub Desktop.
15位身份证转换为18位
/**
* 15位身份证转换为18位
*
*/
function getIdCardNumber18(idCardNumber){
if (!idCardNumber) {
return null;
}
// 转换为字符串
idCardNumber = '' + idCardNumber;
if (idCardNumber.length === 18) {
return idCardNumber;
} else if (idCardNumber.length !== 15) {
return null;
}
/* 首先将身份证号码扩展至17位: 将出生年扩展为19XX的形式 */
var idCardNumber17 = idCardNumber.substring(0, 6) + "19" + idCardNumber.substring(6);
/* 计算校验码 */
var nSum = 0;
for (var nCount = 0; nCount < 17; nCount++) {
nSum += (parseInt(idCardNumber17[nCount], 10) * (Math.pow(2, 17 - nCount) % 11));
}
nSum = nSum % 11;
if (nSum <= 1) {
nSum = 1 - nSum;
} else {
nSum = 12 - nSum;
}
/*
* BUGFIX:18位身份证最后一位应该是X
*/
if (nSum === 10) {
return idCardNumber17 + "X";
} else {
return idCardNumber17 += nSum;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment