js判断身份证最后一位是否合法的方法的总结

简介:

这个方法其实也是在网上找到的,身份证号码验证其实就是验证其最后一位是否合法,

下面是我在网上找到的方法

function isTrueValidateCodeBy18IdCard(idCard) {
var Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 ];// 加权因子 
var ValideCode = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ];// 身份证验证位值.10代表X 
var sum = 0; // 声明加权求和变量 
for ( var i = 0; i < 17; i++) {
var tempnum = idCard.substring(i,i+1);
alert(tempnum);
if (tempnum..toLowerCase() == 'x') {
tempnum = 10;// 将最后位为x的验证码替换为10方便后续操作 
}
sum += Wi[i] * tempnum;// 加权求和 

valCodePosition = sum % 11;// 得到验证码所位置 
var a_idCard_num=idCard[17];
if (a_idCard_num..toLowerCase() == 'x') { 
a_idCard_num = 10;
}
if (a_idCard_num == ValideCode[valCodePosition]) { 
return true; 
} else {
return false; 

}

这个方法存在的问题是当最后一位是数字的时候执行toLowerCase这个方法的时候在有的IE8下会提示不是对象或者未定义,造成错误,所以我经过了以下的修改

/** 
* 判断身份证号码为18位时最后的验证位是否正确 
* @param a_idCard 身份证号码数组 
* @return 
*/ 
function isTrueValidateCodeBy18IdCard(idCard) { 
var Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 ];// 加权因子 
var ValideCode = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ];// 身份证验证位值.10代表X 
var sum = 0; // 声明加权求和变量 
for ( var i = 0; i < 17; i++) {
var tempnum = idCard.substring(i,i+1);
if (tempnum == 'x'||tempnum == 'X') { 
tempnum = 10;// 将最后位为x的验证码替换为10方便后续操作 
}
sum += Wi[i] * tempnum;// 加权求和 

valCodePosition = sum % 11;// 得到验证码所位置 
var a_idCard_num=idCard[17];
if (a_idCard_num == 'x'||a_idCard_num == 'X'){
a_idCard_num = 10;
}
if (a_idCard_num == ValideCode[valCodePosition]){ 
return true; 
} else {
return false; 

}

这样就解决了


本文转自 cd1989929 51CTO博客,原文链接:http://blog.51cto.com/chend/1324503


相关文章
|
22天前
|
存储 JavaScript 对象存储
js检测数据类型有那些方法
js检测数据类型有那些方法
132 59
|
16天前
|
JavaScript 前端开发 API
javaScript中常用的String方法以及注意点总结
本文总结了JavaScript中常用的String对象的方法及其注意事项,包括大小写转换、字符获取、子字符串截取、字符串拼接、去除空格、替换、分割以及查找字符串中字符的索引等操作。提供了每种方法的使用示例代码,帮助理解它们的具体用法和差异。
29 2
|
17天前
|
JavaScript 前端开发
JS之concat方法
本文介绍了JavaScript中`concat`方法的使用,展示了如何利用该方法来合并数组,包括与字符串、数字、对象等类型的拼接,以及使用扩展运算符进行合并的示例。
11 0
JS之concat方法
|
22天前
|
JavaScript 前端开发
JavaScript 中的新 Set 方法
JavaScript 中的新 Set 方法
18 1
|
2天前
|
JavaScript
js两种移除事件的方法
js两种移除事件的方法
|
11天前
|
JavaScript 前端开发
JavaScript遍历数组用splice方法删除元素,这样写可能有遗漏,你遇到过吗?
JavaScript遍历数组用splice方法删除元素,这样写可能有遗漏,你遇到过吗?
|
11天前
|
JavaScript 前端开发
JavaScript从二维数组抽取元素组成新数组的三种方法
JavaScript从二维数组抽取元素组成新数组的三种方法
|
11天前
|
JavaScript 前端开发
用Javascript对二维数组DIY按汉语拼音的排序方法
用Javascript对二维数组DIY按汉语拼音的排序方法
|
13天前
|
JSON JavaScript 前端开发
6-19|Python数据传到JS的方法
6-19|Python数据传到JS的方法
|
14天前
|
JavaScript 前端开发
JavaScript 中 五种迭代数组的方法 every some map filter forEach
本文介绍了JavaScript中五种常用数组迭代方法:every、some、filter、map和forEach,并通过示例代码展示了它们的基本用法和区别。