`

验证SF

    博客分类:
  • js
阅读更多

Js验证身份证

/*
根据〖中华人民共和国国家标准 GB 11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。
    地址码表示编码对象常住户口所在县(市、旗、区)的行政区划代码。
    出生日期码表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。
    顺序码表示同一地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。顺序码的奇数分给男性,偶数分给女性。
    校验码是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。

出生日期计算方法。
    15位的身份证编码首先把出生年扩展为4位,简单的就是增加一个19或18,这样就包含了所有1800-1999年出生的人;
    2000年后出生的肯定都是18位的了没有这个烦恼,至于1800年前出生的,那啥那时应该还没身份证号这个东东,⊙﹏⊙b汗...
下面是正则表达式:
 出生日期1800-2099  (18|19|20)?\d{2}(0[1-9]|1[12])(0[1-9]|[12]\d|3[01])
 身份证正则表达式 /^\d{6}(18|19|20)?\d{2}(0[1-9]|1[12])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i            
 15位校验规则 6位地址编码+6位出生日期+3位顺序号
 18位校验规则 6位地址编码+8位出生日期+3位顺序号+1位校验位
 
 校验位规则     公式:∑(ai×Wi)(mod 11)……………………………………(1)
                公式(1)中: 
                i----表示号码字符从由至左包括校验码在内的位置序号; 
                ai----表示第i位置上的号码字符值; 
                Wi----示第i位置上的加权因子,其数值依据公式Wi=2^(n-1)(mod 11)计算得出。
                i 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
                Wi 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1

*/
//身份证号合法性验证 
//支持15位和18位身份证号
//支持地址编码、出生日期、校验位验证
        function IdentityCodeValid(code) { 
            var city={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江 ",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北 ",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏 ",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外 "};
            var tip = "";
            var pass= true;
            
            if(!code || !/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[12])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(code)){
                tip = "身份证号格式错误";
                pass = false;
            }
            
           else if(!city[code.substr(0,2)]){
                tip = "地址编码错误";
                pass = false;
            }
            else{
                //18位身份证需要验证最后一位校验位
                if(code.length == 18){
                    code = code.split('');
                    //∑(ai×Wi)(mod 11)
                    //加权因子
                    var factor = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ];
                    //校验位
                    var parity = [ 1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2 ];
                    var sum = 0;
                    var ai = 0;
                    var wi = 0;
                    for (var i = 0; i < 17; i++)
                    {
                        ai = code[i];
                        wi = factor[i];
                        sum += ai * wi;
                    }
                    var last = parity[sum % 11];
                    if(parity[sum % 11] != code[17]){
                        tip = "校验位错误";
                        pass =false;
                    }
                }
            }
            if(!pass) alert(tip);
            return pass;
        }
        var c = '130981199312253466';
       var res= IdentityCodeValid(c);

 

分享到:
评论

相关推荐

    危险源第4部分电气试验.docx

    - **目的**:验证电流互感器的准确度等级和稳定性。 - **内容**:主要包括变比误差测试、相位角差测试、励磁特性试验等。 ### 干式电流互感器交代试验作业 - **作业指导书编码**:BDYCSY-ZW-03 - **目的**:确保...

    net.sf.json依赖包

    4. **JSON Schema验证**:虽然`net.sf.json` 自身可能不直接支持JSON Schema验证,但可以通过与其他验证库结合使用,来确保接收到的JSON数据符合预定义的模式。 5. **JSON格式化和美化**:库中提供了方法可以将JSON...

    88SF9110B0-NNR2C000 datasheet 数据手册

    6. Write/Verify 命令支持:该芯片支持 Write/Verify 命令,确保数据的正确写入和验证。 7. T10 承诺支持:Marvell 88SF9110B0 完全支持 T10 承诺规范,确保存储系统的可靠性和安全性。 应用场景 Marvell 88SF9110...

    net.sf.json2.4

    .txt`: 这可能是一个文本文件,原本可能是MD5校验码,用于验证文件完整性,但由于某些原因未能上传。 这些依赖库共同构成了一个完整的JSON处理环境,使得开发者能够在Java中轻松地进行JSON数据的序列化和反序列化,...

    20KV开关柜技术指标文件.docx

    - **气室压力试验**:验证SF6气室的压力稳定性。 - **气室密封试验**:确保SF6气室在各种环境条件下均能保持良好的密封状态。 - **5.2 出厂试验** - 包括结构检查、机械操作和特性试验、主回路和控制回路的耐压...

    全新2023SF授权系统源码 V3.7全开源无加密版本.zip

    SF授权系统是一种用于软件授权验证的解决方案,它确保了软件的合法使用,防止未经授权的复制和分发。 在软件/插件领域,授权系统扮演着至关重要的角色。它通常由两部分组成:客户端和服务端。客户端是嵌入在目标...

    冒险岛SF反挂登录器源码

    【冒险岛SF反挂登录器源码】是一个用于防止外挂程序在冒险岛私人服务器(SF)上运行的登录器的源代码。源码通常由编程语言编写,这里是使用易语言,一种流行的中国本土化编程工具,以实现特定功能。易语言以其简单...

    全新SF授权系统源码 V3.7全开源无加密版本

    2023全新SF授权系统源码 V3.7全开源无加密版本。网站搭建很简单,大致看来一下应该域名解析后上传源码解压,访问域名/install就能直接安装。 程序功能简介: 1.盗版入库(26种) 2.快捷登录 3.采用layuiadmin框架 4....

    android apk文件里MANIFEST.MF、CERT.SF、CERT.RSA三者的关系(csdn)————程序.pdf

    当APK被安装时,Android系统会使用证书中的公钥来解密签名,然后对比解密后的数据和CERT.SF中的原始签名数据,以验证APK的完整性和来源的真实性。 通过这些文件,Android系统可以确保APK未经篡改,只有经过签名验证...

    net.sf.json

    - JSON Schema验证:`net.sf.json.JSONObject.validateSchema()`方法可以用来验证JSON对象是否符合指定的JSON Schema。 - 转换策略:`net.sf.json.util.JSONConfig`允许你配置转换规则,比如日期格式、循环引用的...

    最新美化劲舞团SF登陆器原代码

    总的来说,"最新美化劲舞团SF登陆器原代码"是一个极好的学习资源,涵盖了登录验证、界面美化、性能优化等多个方面的知识。对于有志于游戏开发或者前端设计的人员来说,这是一次宝贵的实践机会,从中可以汲取丰富的...

    威刚SSD固件升级主程序(SF主控)

    6. **验证固件**:升级后,重启电脑,进入BIOS或使用工具检查新的固件版本。 尽管固件升级通常很顺利,但可能会遇到问题,比如找不到设备、升级失败或设备无法识别。这些问题可能由不兼容的系统、错误的升级程序或...

    timezone修复 ln -sf无效 centos rhel radhat

    - **验证时区**:可以通过`date`或`timedatectl`命令来检查时区是否正确设置。 总的来说,修复`timezone`问题,尤其是当`ln -sf`命令失效时,需要理解Linux时区的工作原理,并能够正确操作系统文件和链接。通过下载...

    SF-CSIM-EXPRESS-SDK.zip

    1. **集成验证**:在使用SDK之前,开发者需要进行集成验证,确保应用与平台之间的通讯安全无误。这通常涉及到API密钥的获取和设置,以及调用验证接口进行身份验证。SDK提供了便捷的方法来处理这些过程,减少了开发中...

    net.sf.json.JSONObject相关jar包.zip

    6. **错误处理**:在处理JSON时,需要捕获JSONException,这是一个在解析、序列化或验证JSON时可能会抛出的异常。 7. **与其他数据类型转换**:JSONObject支持与Java基本类型、集合、Map等之间的转换,提供便利的...

    cisco sf300 手册

    安全复制(SCP)和SSH的使用方法、保护机制、验证流程等,为远程管理提供了安全的连接方式。 以上知识点全面覆盖了Cisco SF300系列管理型交换机的配置和管理领域,深入学习和掌握这些内容,将极大地提升网络工程师在...

    ADATA_SF_FieldUpdaterV136

    标题“ADATA_SF_FieldUpdaterV136”指向的是一个固件更新工具,主要针对ADATA(威刚)品牌的存储设备,如固态硬盘或闪存驱动器。这个工具的主要功能是帮助用户更新其ADATA设备的固件,以提高性能、修复潜在问题或...

    Li-SF6热源相关的文献

    - **化学反应方程式**:\[8Li + SF_6 \rightarrow 6LiF + Li_2S\] - 反应产物包括LiF和Li_2S,这两种物质可溶于液态锂中,形成两种互不相溶的液体——燃料富集液(或金属富集液)和产物富集液(或盐富集液)。 - **...

    AT25SF081 flash 源代码 driver SPI flash

    3. 写操作:预编程、编程和写入验证,确保数据正确写入闪存芯片的特定地址。 4. 擦除操作:执行扇区擦除或整个芯片的擦除,为新数据腾出空间。 5. 锁定/解锁:设置和解除保护区域,防止特定区域的数据被意外修改。 6...

    Citrix SF配置NAT方式

    然而,在Citrix StoreFront(以下简称SF)取代WI成为主流发布平台后,原有的Secure Access功能被移除,取而代之的是通过Citrix Access Gateway或Netscaler进行ICA代理的方式。 这种方式虽然有效,但在某些场景下...

Global site tag (gtag.js) - Google Analytics