Created
June 6, 2014 11:54
-
-
Save shepherdwind/fd75dbda4f81be714dd5 to your computer and use it in GitHub Desktop.
15位身份证转换为18位
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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