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

身份证的校验规则_身份证号有效/**身份证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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • datagrip2021 最新激活码破解方法

    datagrip2021 最新激活码破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    265
  • 2020Java高级开发工程师面试题汇总

    2020Java高级开发工程师面试题汇总2020面试总结工作三年多,面试目标为高级开发工程师前言9.5–11.13,经过了长达70天的面试,终于有了结果。期间崩溃过无数次,很多次面试都被虐到怀疑人生,也有三面被刷掉无奈,一次次整装重新出发,一次次从头再来。今天有时间整理最近面试过程中涉及到的问题和经验,希望可以帮助到正在面试中或即将面试的同行们。一、面试过的公司阿里巴巴京东美团百度度小满金融爱奇艺当当网58同城贝壳找房快手小米滴滴微博陌陌中信银行尚德机构轻松筹货拉拉一起教育易车好未来二、面

    2022年5月29日
    54
  • PB AcceptText()函数

    PB AcceptText()函数文章来源:https://bbs.csdn.net/topics/380140428此文章解释的很清楚,以下博文仅用于记录AcceptText()功能将“漂浮”在数据窗口控件上编辑框的内容放入到数据窗口控件的当前项中(主缓区中)。在将数据放入到当前项之前,编辑框中的数据必须通过有效性规则检查语法dwcontrol.AcceptText()参数dwcontrol:数…

    2022年7月26日
    13
  • 泰国80亿互联网记录数据库泄漏,疑遭黑客攻击[通俗易懂]

    泰国80亿互联网记录数据库泄漏,疑遭黑客攻击[通俗易懂]泰国最大的蜂窝网络AIS已使数据库脱机,疑遭黑客攻击,这使达80亿实时互联网记录泄漏到数百万泰国互联网用户上,该事件震惊整个泰国。全球著名白帽黑客、东方联盟创始人郭盛华博客文章中说,他在互联网上没有密码就找到了包含DNS查询和Netflow数据的数据库。通过访问该数据库,任何人都可以“快速描绘”互联网用户(或其家庭)的实时行为。他表示:“在数据库中找到的记录只能来自能够监视Internet流量在网络上流动的人。但是,没有一种简单的方法可以区分数据库是属于Internet提供商还…

    2025年11月22日
    6
  • arp病毒查杀_arp病毒攻击有哪些典型现象

    arp病毒查杀_arp病毒攻击有哪些典型现象XX公司网络卡断问题1.问题现象2017年XX公司机关网络出现几次异常情况,并寻求内外部专家对异常情况进行诊断分析,均未找到原因,具体情况如下:1.XX分公司机关网络IP地址为10.0.0.1

    2022年8月5日
    7
  • pycharm自己设置补全内容

    pycharm自己设置补全内容pycharm自己设置补全内容学习网络爬虫时,发现我们写一个代码总是要到浏览器上复制User-Agent,或者到自己之前保存好的文件里复制,当然直接能把浏览器的User-agent一个字母不拉的写出来的牛人不在此列。所以我在pycharm上自定义了一个补全模板,可以帮我快速填写User-agent,如下图:1.首先打开pycharm的–》设置,然后选择–》编辑器>活动模板2.然后点右边的‘+’添加自定义代码内容3.然后编辑这个模板说明:缩写:User-Agent这里填写的是

    2022年8月25日
    10

发表回复

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

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