`
wb284551926
  • 浏览: 553996 次
文章分类
社区版块
存档分类
最新评论

身份证的算法 js版(转载)

 
阅读更多

从1999年10月1日起,全国实行公民身份证号码制度,居民身份证编号由原15位升至18位。前6位为地址码;第七位至14位为出生日期码,此码由6位数改为8位数,其中年份用4位数表示;第15位至17位为顺序码,取消了顺序码中对百岁老人使用的特定编号;第十八位为校验码,主要是为了校验计算机输入公民身份证号码的前17位数字是否正确,其取值范围是0至10,当值等于10时,用罗马数字符χ表示。

/**  
* 身份证15位编码规则:dddddd yymmdd xx p  
* dddddd:地区码  
* yymmdd: 出生年月日  
* xx: 顺序类编码,无法确定  
* p: 性别,奇数为男,偶数为女  
* <p />  
* 身份证18位编码规则:dddddd yyyymmdd xxx y  
* dddddd:地区码  
* yyyymmdd: 出生年月日  
* xxx:顺序类编码,无法确定,奇数为男,偶数为女  
* y: 校验码,该位数值可通过前17位计算获得  
* <p />  
* 18位号码加权因子为(从右到左) Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2,1 ]  
* 验证位 Y = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ]  
* 校验位计算公式:Y_P = mod( ∑(Ai×Wi),11 )  
* i为身份证号码从右往左数的 2...18 位; Y_P为脚丫校验码所在校验码数组位置  
*  
*/  


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  
function IdCardValidate(idCard) {  
    idCard = trim(idCard.replace(/ /g, ""));  
    if (idCard.length == 15) {  
        return isValidityBrithBy15IdCard(idCard);  
    } else if (idCard.length == 18) {  
        var a_idCard = idCard.split("");// 得到身份证数组  
        if(isValidityBrithBy18IdCard(idCard)&&isTrueValidateCodeBy18IdCard(a_idCard)){  
            return true;  
        }else {  
            return false;  
        }  
    } else {  
        return false;  
    }  
}  
/**  
* 判断身份证号码为18位时最后的验证位是否正确  
* @param a_idCard 身份证号码数组  
* @return  
*/  
function isTrueValidateCodeBy18IdCard(a_idCard) {  
    var sum = 0; // 声明加权求和变量  
    if (a_idCard[17].toLowerCase() == 'x') {  
        a_idCard[17] = 10;// 将最后位为x的验证码替换为10方便后续操作  
    }  
    for ( var i = 0; i < 17; i++) {  
        sum += Wi * a_idCard;// 加权求和  
    }  
    valCodePosition = sum % 11;// 得到验证码所位置  
    if (a_idCard[17] == ValideCode[valCodePosition]) {  
        return true;  
    } else {  
        return false;  
    }  
}  
/**  
* 通过身份证判断是男是女  
* @param idCard 15/18位身份证号码  
* @return 'female'-女、'male'-男  
*/  
function maleOrFemalByIdCard(idCard){  
    idCard = trim(idCard.replace(/ /g, ""));// 对身份证号码做处理。包括字符间有空格。  
    if(idCard.length==15){  
        if(idCard.substring(14,15)%2==0){  
            return 'female';  
        }else{  
            return 'male';  
        }  
    }else if(idCard.length ==18){  
        if(idCard.substring(14,17)%2==0){  
            return 'female';  
        }else{  
            return 'male';  
        }  
    }else{  
        return null;  
    }  

分享到:
评论

相关推荐

    python版身份证识别算法

    Python版身份证识别算法是利用计算机视觉和机器学习技术来自动识别身份证件上的文字信息,尤其在现代社会中,这种技术有着广泛的应用,例如在银行开户、网络注册、酒店入住等场景。该算法通常包括图像预处理、字符...

    身份证算法(二)和表单验证

    本文将深入探讨身份证号码的算法以及如何利用正则表达式(RegExp)进行表单验证,旨在帮助开发者提升应用程序的安全性和用户体验。 首先,让我们理解身份证号码的构成。中国的身份证号码由18位数字组成,分为五个部分...

    国密sm3算法js版

    国密sm3算法js版,可实现对密码进行sm3算法加密。资源包含示例、所选js及包,可直接测试使用。

    《国密算法》--国密算法js版.zip

    个人实战积累的成果,基于国密算法的总结,希望可以帮到您 亲们下载我任何一个付费资源后,即可私信联系我免费下载其他相关资源哦~ 个人实战积累的成果,基于国密算法的总结,希望可以帮到您 亲们下载我任何一个...

    matlab 身份证识别算法

    而“matlab 身份证识别算法”则是利用MATLAB这一强大的编程环境来实现这一功能。MATLAB,全称为“矩阵实验室”,因其强大的数值计算和可视化能力而广泛应用于科学计算、工程设计以及图像处理等领域。 在身份证识别...

    C#身份证校验算法,可以无需在离线状态下校验身份证是否正确

    C#身份证校验算法,可以无需在离线状态下校验身份证是否正确,无需联网校验身份证正确性,主要算法是根据身份证规则来校验身份证正确性

    JS数据结构与算法.pdf

    JS 数据结构与算法.pdf 本书主要介绍了 JavaScript 语言的基础知识,包括数据结构和算法。以下是该书的详细知识点: 一、JavaScript 基础知识 * 变量和数据类型 * 运算符和控制结构 * 函数和对象 * 数组和字符串 ...

    js校验身份证号和银行卡号

    在JavaScript(简称js)编程中,验证身份证号和银行卡号是非常常见的需求,特别是在网页表单提交或者用户注册等场景。身份证号码验证确保了输入的有效性,防止非法或错误的输入,而银行卡号验证则可以保护用户的金融...

    js验证身份证格式

    本压缩包提供的资源“js验证身份证”包含了一个JavaScript函数,用于检查输入的身份证号码是否符合15位或18位身份证号码的规则。 首先,我们来了解一下中国身份证的基本结构。15位身份证号码在1999年后已经被18位...

    身份证验证算法

    身份证验证算法是用于确认个人身份的一种重要技术,它基于我国公民身份证号码的编码规则进行设计。身份证号码由18位数字组成(在某些情况下可能是15位),包含了丰富的个人信息,如出生地、出生日期和性别。这个算法...

    谷歌地图坐标纠偏算法javascript版.docx

    谷歌地图坐标纠偏算法javascript版 从文件的标题、描述、标签和部分内容可以看出,这是一个关于GPS坐标纠偏算法的javascript实现,特别是用于Google Map和高德地图的坐标转换。 坐标纠偏算法的必要性 在GPS定位...

    寻径算法JS版本

    "寻径算法JS版本"标题表明我们将讨论如何使用JavaScript语言来编写寻径算法。 "有源码+DEMO"的描述意味着我们不仅有机会看到实际的代码实现,还可以通过DEMO(演示)直观地理解算法的工作原理。通常,这样的资源...

    身份证号码校验算法描述

    ### 身份证号码校验算法详解 #### 一、身份证号码概述与规范 中国的身份证号码自1999年7月1日起正式实施GB11643-1999标准,该标准取代了之前的GB11643-1989版本。身份证号码由18位数字组成,每部分都有其特定的意义...

    js排序算法动态展示

    js排序算法动态显示js排序算法动态显示js排序算法动态显示js排序算法动态显示js排序算法动态显示js排序算法动态显示js排序算法动态显示js排序算法动态显示js排序算法动态显示js排序算法动态显示js排序算法动态显示js...

    算法 第4版.pdf

    《算法》第四版是图灵丛书中的经典之作,专注于阐述算法和数据结构的核心概念,是计算机科学和技术领域不可或缺的学习资源。这本书以清晰易懂的方式,深入浅出地讲解了编程中涉及的各种算法和数据结构,适合初学者和...

    基于JavaScript的旅行路径规划算法设计与实现

    本项目聚焦于如何利用JavaScript设计和实现一个旅行路径规划算法,以帮助用户高效地规划他们的出行路线。 首先,我们需要理解路径规划的基本概念。路径规划算法通常涉及图论中的最短路径问题,如Dijkstra算法或A*...

    蚁群算法matlab版

    蚁群算法matlab版蚁群算法matlab版 蚁群算法matlab版蚁群算法matlab版 蚁群算法matlab版蚁群算法matlab版 蚁群算法matlab版蚁群算法matlab版 蚁群算法matlab版蚁群算法matlab版 蚁群算法matlab版蚁群算法matlab版 蚁...

    基于MATLAB的身份证号码识别算法_毕业论文.pdf

    基于MATLAB的身份证号码识别算法毕业论文 本论文主要介绍了基于MATLAB的身份证号码识别算法,旨在开发一种高效、准确的身份证号码识别系统。该系统可以自动识别身份证号码,减少人工识别的错误和时间成本。 第一...

    操作系统银行家算法 js网页实现

    操作系统中的银行家算法是一种著名的资源分配策略,用于...在压缩包中的"bank"文件可能是实现银行家算法的JS源代码文件,打开后可以查看具体的实现细节和注释,这对于深入理解和实践操作系统中的银行家算法非常有帮助。

    dijkstra算法实现js版

    代码里所用的例子是算法导论第三版第24章讲dijkstra时所用的例题

Global site tag (gtag.js) - Google Analytics