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

身份证的校验规则_身份证号有效/**身份证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("身份证格式不正确!");

            }

        }

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 微商分销代理新零售商城源码

    微商分销代理新零售商城源码介绍:一款比较简单的微商分销代理商城。前台可申请区域代理,后台设置升级条件和佣金奖励百分比。网盘下载地址:http://kekewl.net/WxdHLptocNg0图片:

  • 用opencv的dnn模块做yolov5目标检测[通俗易懂]

    用opencv的dnn模块做yolov5目标检测[通俗易懂]最近在微信公众号里看到多篇讲解yolov5在openvino部署做目标检测文章,但是没看到过用opencv的dnn模块做yolov5目标检测的。于是,我就想着编写一套用opencv的dnn模块做yolov5目标检测的程序。在编写这套程序时,遇到的bug和解决办法,在这篇文章里讲述一下。在yolov5之前的yolov3和yolov4的官方代码都是基于darknet框架的实现的,因此opencv的dnn模块做目标检测时,读取的是.cfg和.weight文件,那时候编写程序很顺畅,没有遇到bug。但是yolo

    2022年10月13日
  • docker(4)解决pull镜像速度缓慢「建议收藏」

    docker(4)解决pull镜像速度缓慢「建议收藏」前言上一篇讲到pull镜像,但是pull镜像的时候下拉的速度实在感人,有什么解决办法吗?我们只需将docker镜像源修改为国内的将docker镜像源修改为国内的:在/etc/docker/d

  • Python魔术方法

    Python魔术方法

  • kettle使用教程(超详细)

    kettle使用教程(超详细)今天详细详细说一下kettle的安装,安装的版本:jdk:jdk-8u152-windows–x64kettle:KETTLE-5.4一、环境部署1、安装JDK,按默认值安装即可2、设置环境变量,如图下图具体步骤:1.右击我的电脑-属性-高级系统设置-环境变量-系统变量-新建2.变量名:JAVA_HOME3.变量值:JDK安装目录3、…

发表回复

您的电子邮箱地址不会被公开。

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