身份证的校验规则_身份证号有效

身份证的校验规则_身份证号有效/**身份证15位编码规则:ddddddyymmddxxp*dddddd:6位地区编码*yymmdd:出生年(两位年)月日,如:910215*xx:顺序编码,系统产生,无法确

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

 /*

         * 身份证15位编码规则:dddddd yymmdd xx p

         * dddddd:6位地区编码

         * yymmdd: 出生年(两位年)月日,如:910215

         * xx: 顺序编码,系统产生,无法确定

         * p: 性别,奇数为男,偶数为女

         *

         * 身份证18位编码规则:dddddd yyyymmdd xxx y

         * dddddd:6位地区编码

         * yyyymmdd: 出生年(四位年)月日,如:19910215

         * xxx:顺序编码,系统产生,无法确定,奇数为男,偶数为女

         * y: 校验码,该位数值可通过前17位计算获得

         *

         * 前17位号码加权因子为 Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ]

         * 验证位 Y = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ]

         * 如果验证码恰好是10,为了保证身份证是十八位,那么第十八位将用X来代替

         * 校验位计算公式:Y_P = mod( ∑(Ai×Wi),11 )

         * i为身份证号码1...17 位; Y_P为校验码Y所在校验码数组位置

        */

         function validateIdCard(idCard){

            //15位和18位身份证号码的正则表达式

            var regIdCard=/^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/;

 

            //如果通过该验证,说明身份证格式正确,但准确性还需计算

            if(regIdCard.test(idCard)){

                if(idCard.length==18){

                    var idCardWi=new Array( 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ); //将前17位加权因子保存在数组里

                    var idCardY=new Array( 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ); //这是除以11后,可能产生的11位余数、验证码,也保存成数组

                    var idCardWiSum=0; //用来保存前17位各自乖以加权因子后的总和

                    for(var i=0;i<17;i++){

                        idCardWiSum+=idCard.substring(i,i+1)*idCardWi[i];

                    }

                    var idCardMod=idCardWiSum%11;//计算出校验码所在数组的位置

                    var idCardLast=idCard.substring(17);//得到最后一位身份证号码

                    //如果等于2,则说明校验码是10,身份证号码最后一位应该是X

                    if(idCardMod==2){

                        if(idCardLast=="X"||idCardLast=="x"){

                            alert("恭喜通过验证啦!");

                        }else{

                            alert("身份证号码错误!");

                        }

                    }else{

                        //用计算出的验证码与最后一位身份证号码匹配,如果一致,说明通过,否则是无效的身份证号码

                        if(idCardLast==idCardY[idCardMod]){

                            alert("恭喜通过验证啦!");

                        }else{

                            alert("身份证号码错误!");

                        }

                    }

                }

            }else{

                alert("身份证格式不正确!");

            }

        }

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168296.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ubuntu安装rabbitvcs[通俗易懂]

    ubuntu安装rabbitvcs[通俗易懂]安装RabbitVCS的方法步骤如下:第一步:将rabbitvcs的添加到源里面。(次操作会提示是否要添加到源里面,点击ENTER添加,Ctrl+C不添加),这里选择ENTER方便更新。sudoadd-apt-repositoryppa:rabbitvcs/ppa第二步:根据第一步的情况来是否跳过该步骤,如果第一步出现导入key,那第二步可以跳过,否则需要导入keysudo

    2022年7月18日
  • C语言算法之将十进制数转换成二进制数[通俗易懂]

    C语言算法之将十进制数转换成二进制数[通俗易懂]导语:在C语言中没有将其他进制的数直接输出为二进制数的工具或方法,输出为八进制数可以用%o,输出为十六进制可以用%x,输出为二进制就要我们自行解决了。下面给大家讲述一下如何编程实现将十进制数转换成二进制数。先将源代码展示给大家:#include&lt;stdio.h&gt;voidmain(){//进制转换函数的声明inttransfer(intx)…

    2022年5月19日
  • conv2d卷积核_子集卷积

    conv2d卷积核_子集卷积学习torch框架中的卷积神经网络,对此进行记录一、nn.Conv2dnn.Conv2d(self,in_channels,out_channels,kernel_size,stride=1,padding=0,dilation=1,groups=1,bias=True))参数:in_channel:输入数据的通道数,例RGB图片通道数为3;out_channel:输…

    2022年10月21日
  • HBase Shell命令大全「建议收藏」

    HBase Shell命令大全「建议收藏」HBase关键名称:RowKey列族columnfamily单元Cell时间戳timestampHBaseShell是官方提供的一组命令,用于操作HBase。如果配置了HBase的环境变量了,就可以知己在命令行中输入hbaseshell命令进入命令行。hbaseshellhelp命令可以通过help’命名名称’来查看命令行的具体使用查询服务器状态st…

    2022年7月16日
  • tga文件解析「建议收藏」

    Tga常见的格式有非压缩RGB和压缩RGB两种格式,文件的第三个Byte位作为标记:2为非压缩RGB格式,10为压缩RGB格式。这里的类只实现读取非压缩格式的tga文件。先给出tga文件的文件格式:名称偏移长度说明图像信息字段长度01本字段是1字节无符号整型,指出图像信息字段

    2022年4月6日
  • Linux Redhat 7.6 操作系统 下载安装详解「建议收藏」

    Linux Redhat 7.6 操作系统 下载安装详解「建议收藏」redhat系统镜像分享[百度网盘分享]链接:https://pan.baidu.com/s/1U0SUh7qmLGfpLN5Fqb4Wgg提取码:bpwdredhat7.6版本安装详解

    2022年8月5日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号