首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js身份证号码升位

在JavaScript中处理身份证号码升位通常涉及到将15位身份证号码升级为18位。15位身份证号码升级到18位主要是在原号码的基础上增加一位校验码,并将出生年份从两位扩展到四位。

基础概念

  • 15位身份证号码:前6位是地址码,接下来6位是出生日期(YYMMDD),最后3位是顺序码。
  • 18位身份证号码:前6位是地址码,接下来8位是出生日期(YYYYMMDD),再接下来3位是顺序码,最后1位是校验码。

升位规则

  1. 将15位身份证号码的第7位到第12位(出生年月日)的年份部分由两位扩展为四位,即19xx年。
  2. 计算校验码:
    • 根据ISO 7064:1983.MOD 11-2校验码计算规则。
    • 校验码的计算涉及到权重因子和模运算。

优势

  • 兼容性:18位身份证号码更符合现代系统的需求。
  • 准确性:增加了校验码,可以有效防止输入错误。

应用场景

  • 用户注册和登录时验证身份信息。
  • 数据迁移和系统升级时需要统一身份证号码格式。

示例代码

以下是一个JavaScript函数,用于将15位身份证号码升位为18位:

代码语言:txt
复制
function upgradeIDCard(idCard15) {
    if (idCard15.length !== 15) {
        return 'Invalid ID card number';
    }

    // 将15位身份证号码扩展为17位
    let idCard17 = idCard15.substring(0, 6) + '19' + idCard15.substring(6);

    // 计算校验码
    const weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
    const checkCodes = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];

    let sum = 0;
    for (let i = 0; i < 17; i++) {
        sum += parseInt(idCard17[i]) * weights[i];
    }

    let mod = sum % 11;
    let checkCode = checkCodes[mod];

    // 返回18位身份证号码
    return idCard17 + checkCode;
}

// 示例
console.log(upgradeIDCard('110105820101001')); // 输出: 11010519820101001X

解决问题的原因

  • 输入错误:用户可能输入了错误的身份证号码。
  • 系统兼容性:旧系统可能只支持15位身份证号码,而新系统需要18位。

解决方法

  • 验证输入:确保输入的身份证号码符合15位或18位的格式。
  • 自动升位:使用上述函数自动将15位身份证号码升位为18位。
  • 校验码计算:确保校验码计算正确,以避免身份验证失败。

通过这种方式,可以有效地处理身份证号码的升位问题,确保数据的准确性和系统的兼容性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

片多多64位升级之路

为了满足厂商的要求和市场趋势,64位的安装包升级无可避免。为了解决片多多在64位机型上的性能和稳定性问题,需要在工程中支持64位安装包,并能准确输出64位包,最后进行精准分发。2.收益是什么?...1⃣️商店渠道自带支持:根据用户机型情况判断给用户推送32位或者64位包2⃣️应用内升级准备支持:根据用户机型情况判断让用户下载32位或者64位包来安装3⃣️分发渠道:渠道分发目前优先32位包,64位包由升级行为带动...,为两份安装包5.64位app运行原理5.1 什么是64位适配?...64位适配,是指在64位的设备上运行64位的进程。5.2 如何做到让我们的app运行在64位进程上?...若该应用进程是由32位创建,那么则运行在32位进程上,64位同理。

52850
  • 「硬核JS」令你迷惑的位运算

    写在前面 今天,我们来学习一下 JS 操作符中的位操作符 在 JS 这门语言的标准里,描述了一组可以用来操作数据值的操作符,其中包括 数学操作符、位操作符、关系操作符、相等操作符、布尔操作符、条件操作符以及...+[]]*~+[]] 嗯,就以这一段网红代码为开头吧 看此文之前,请一定要先阅读这篇文章 「硬核JS」数字之美 「硬核JS」数字之美 「硬核JS」数字之美 重要的事情说三遍,上面这篇文章就是给此文做准备的...,这种格式用 64 位二进制存储数值,64 位也就是 64 比特(bit),相当于 8 个字节,其中 0 到 51 存储数字(片段),52 到 62 存储指数,63 位存储符号 而在 JS 位运算中,并不会用...位二进制整数就可以,因为 64 位存储格式是不可见的,但是也正是因为后台这个默认转换操作,给 JS 这门语言产生了一个副作用,即特殊值 NaN 和 Infinity 在位运算中都会直接被当作 0 来处理...,如下所示 ~~3.14 == 3 很多人知道这样可以取整,但是由于不知道具体是为什么而不敢用,所以我们来解释下为什么它为什么可以取整 上面我们说过,在 JS 位运算中,并不会用 64 位来计算,它会先在后台把值转换为

    1.8K20

    string类型保留两位小数_js保留4位小数

    /)) // 输出结果为 15.77,不能用于整数如 10 必须写为10.0000 注意:如果是负数,请先转换为正数再计算,最后转回负数 javascript保留两位小数的实例: //保留两位小数 //...(“保留1位小数:” + 1000.08.toFixed(1)); alert(“保留1位小数:” + 1000.04.toFixed(1)); alert(“保留1位小数:” + 1000.05.toFixed...不含n位 alert(“精确到小数点第2位” + 3.1415.toPrecision(2)); alert(“精确到小数点第3位” + 3.1465.toPrecision(3)); alert(“精确到小数点第...2位” + 3.1415.toPrecision(2)); alert(“精确到小数点第2位” + 3.1455.toPrecision(2)); alert(“精确到小数点第5位” + 3.141592679287...5.js保留2位小数(强制) 对于小数点位数大于2位的,用上面的函数没问题,但是如果小于2位的,比如:changeTwoDecimal(3.1),将返回3.1,如果你一定需要3.10这样的格式,那么需要下面的这个函数

    8.8K30

    Js中的位操作符

    Js中的位操作符 JavaScript的数字类型为双精度IEEE 754 64位浮点类型,但是在位运算中位运算符用于32位的数字上, 任何的数字操作都将转为32位, 运算结果再转化为Js数字类型。...描述 所有的按位操作符的操作数都会被转成补码形式的有符号32位整数,从概念上讲,按位逻辑操作符按遵守下面规则: 操作数被转换成32位整数,用比特序列(0和1组成)表示,超过32位的数字会被丢弃。...第一个操作数的每个比特位与第二个操作数的相应比特位匹配,第一位对应第一位,第二位对应第二位,以此类推。 位运算符应用到每对比特位,结果是新的比特值。...(NOT) 对于每一个比特位,反转操作数的比特位,即0变成1,1变成0,真值表如下: a ~ a 0 1 1 0 我们可以使用~操作符来强制转换值为int 32即32位整数类型。...丢弃被移出的位。

    76720

    Python计算身份证第18位(校验码)来判断身份证是否输入正确

    从1999年10月1日起,全国实行公民身份证号码制度,居民身份证编号由原15位升至18位。...前6位为地址码;第七位至14位为出生日期码,此码由6位数改为8位数,其中年份用4位数表示;第15位至17位为顺序码,取消了顺序码中对百岁老人使用的特定编号;第十八位为校验码,主要是为了校验计算机输入公民身份证号码的前...校验码计算方法 将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。...例如:某女性的身份证号码是220202202002020022。我们要看看这个身份证是不是合法的身份证。 首先我们得出前17位的乘积和是98,然后用98除以11得出其余数是10。...所以,可以判定这是一个合格的身份证号码。

    4.9K30

    开源项目 | Java开发身份证号码识别系统

    重新修改了后面的识别过程,用户opencv进行图片优化和区域选择,使用tess4j进行数字和x的识别,配合样式中的区域在后台裁剪相关区域图片 /idCardCv/src/main/resources/static/js...windows-x86_64\jniopencv_core.dll: Can't find dependent libraries 原因是没有c++运行环境,在img/vc_redist.x64.exe中添加了64位的运行环境...3 身份证号码识别 请求地址 http://localhost:8080/idCard/index 它基于openCV这个开源库。这意味着你可以获取全部源代码,并且移植到opencv支持的所有平台。...将opencv3.4.3升级到4.3 项目地址:https://gitee.com/endlesshh/idCardCv PS:防止找不到本篇文章,可以收藏点赞,方便翻阅查找哦。

    1.6K10

    数字千分位处理,number.js,js保留两位,整数强制保留两位小数 杨龙飞

    杨龙飞 杨龙飞 杨龙飞 杨龙飞 杨龙飞 杨龙飞 官方文档:https://www.customd.com/articles/14/jquery-number-format-redux 1、千分位 $.number...(data,2);//保留两位,加上千分位 $('#price').number( true, 2 );//输入的时候自动进行格式化,保留两位小数点,加上千分位 ?...当input type="number"时,此插件不支持,type必须是text才行 2、保留两位小数(整数默认加上.00) var a = "1"; a=a-0;//转化为数字 a.toFixed(2...);//强制保留两位 typeof a; number; a; 1.00; 博客地址:http://www.cnblogs.com/windseek/ 3、保留两位小数(整数不处理) varx=11.111...var newval=$(this).val()-0; $(this).val(""); $(this).val(newval); }) })() 5、js

    5.9K40

    js保留两位小数的方法_jquery 保留两位小数

    /)) // 输出结果为 15.77,不能用于整数如 10 必须写为10.0000 注意:如果是负数,请先转换为正数再计算,最后转回负数 再分享一个经典的解决四舍五入问题后js保留两位小数的方法: ?...5.js保留2位小数(强制) 对于小数点位数大于2位的,用上面的函数没问题,但是如果小于2位的,比如:changeTwoDecimal(3.1),将返回3.1,如果你一定需要3.10这样的格式,那么需要下面的这个函数...取整数,js取绝对值,js四舍五入(可保留两位小数) JS取整数,js取绝对值,js四舍五入(可保留两位小数)函数如下: ?...1234567891011121314151617 总结 JS数据格式化是在进行web前端开发时常碰到的事情,特别是在数据类型为Float的数据就需要特殊处理,如保留两位小数、小数点后的数据是否需要四舍五入等等...下面就来介绍实现数据格式化保留两位小数的多种方法。 1、JS自带的方法toFixed(),toFixed() 方法可把 Number 四舍五入为指定小数位数的数字。

    6.7K20
    领券