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

身份证规则+js

身份证号码是用于标识中国公民身份的一串数字,通常由18位组成,其结构如下:

  1. 前6位:表示行政区划代码,即户籍所在地的地区代码。
  2. 第7到14位:表示出生日期,格式为YYYYMMDD。
  3. 第15到17位:表示顺序码,其中奇数分配给男性,偶数分配给女性。
  4. 第18位:是校验码,用于校验身份证号码的正确性,范围是0-9和X。

身份证号码校验的JavaScript实现

以下是一个简单的JavaScript函数,用于校验身份证号码的格式和校验码:

代码语言:txt
复制
function validateIDCard(idCard) {
    const reg = /(^\d{15}$)|(^\d{17}(\d|X|x)$)/;
    if (!reg.test(idCard)) {
        return false;
    }

    // 加权因子
    const weight = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
    // 校验码
    const checkCode = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];

    let sum = 0;
    for (let i = 0; i < 17; i++) {
        sum += parseInt(idCard.charAt(i)) * weight[i];
    }

    const mod = sum % 11;
    const expectedCheckCode = checkCode[mod];

    return expectedCheckCode === idCard.charAt(17).toUpperCase();
}

// 使用示例
const idCard = "11010519491231002X";
console.log(validateIDCard(idCard)); // 输出 true 或 false

优势

  • 准确性:通过校验码确保身份证号码的正确性。
  • 效率:简单的计算和比较,适合前端快速验证。

应用场景

  • 用户注册:在用户注册时验证身份证号码的合法性。
  • 信息管理:在管理系统中确保身份证信息的准确性。

注意事项

  • 此函数仅校验身份证号码的格式和校验码,不验证行政区划代码和出生日期的真实性。
  • 对于更严格的验证,可能需要结合数据库或第三方服务进行更详细的检查。

希望这个答案能帮助你理解身份证号码的结构和如何在JavaScript中进行基本的校验。

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

相关·内容

身份证号校验规则

中国居民身份证号码编码规则 第一、二位表示省(自治区、直辖市、特别行政区)。 第三、四位表示市(地级市、自治州、盟及国家直辖市所属市辖区和县的汇总码)。...其中第一代身份证号码为15位。年份两位数字表示,没有校验码。...前六位详情请参考省市县地区代码 X是罗马字符表示数字10,罗马字符(1-12):Ⅰ、Ⅱ、Ⅲ、Ⅳ、Ⅴ、Ⅵ、Ⅶ、Ⅷ、Ⅸ、Ⅹ、Ⅺ、Ⅻ……,详情请参考罗马字符 中国居民身份证校验码算法 步骤如下: 将身份证号码前面的...例如:某男性的身份证号码为【53010219200508011x】, 我们看看这个身份证是不是合法的身份证。...最后通过对应规则就可以知道余数2对应的检验码是X。所以,可以判定这是一个正确的身份证号码。 未经允许不得转载:肥猫博客 » 身份证号校验规则

2.5K20
  • 二代身份证编码规则及校验代码实现

    本文主要讨论的是二代身份证编码规则及其Java代码实现,下面的校验方式还不是特别严谨,由于只校验了前两位的省份信息,中间六位的出生日期信息和最后一位的校验码信息,故对于部分不满足要求的证件号码刚好同时满足了这里提到的几个条件...,也会被判定为是合法的证件号码… 1 二代身份证号码编码规则 1.1 编码格式 1999年我国颁发了第二代居民身份证号,公民身份号码为18位,且终身不变。...身份证顺序码的奇数分配给男性,偶数分配给女性。这就是为什么倒数第二位奇数表示男生,偶数表示女生。...当我们输入身份号码进行实名认证的时候,根据校验码算法可以初步判断你输入身份证号码格式是否正确。...checkCode.equals(lastNum)){ return false; } return true; } 3 参考文献 金融支付:身份证号码的编码规则 java

    1.7K20

    Oracle 关于身份证校验规则详细说明(附有代码复制可执行)

    身份证号码组成 15位身份证号组成: 省份(2位)市(2位)区[县](2位)年(2位)月(2位)日(2位)+3位序列号 [奇数给男性/偶数给女性] 18位身份证号组成: 省份(2位)市(2位)区[县](...10做尾号,那么此人的身份证就变成了19位,而19位的号码违反了国家标准,并且中国的计算机用用系统也不承认19位的身份证号码。...如果余数是10,就会在身份证的第18位数字上出现的是2。 例如:某男性的身份证号码 我们要看看这个身份证是不是合法的身份证。...最后通过对应规则就可以知道余数2对应的是罗马数字X。可以判定这是一个合格的身份证号码。...--返回-2:表示身份证位数有误。   --返回-3:表示出生日期有误或者身份证含有不正确的信息。   --返回-4:表示身份证最后一位校验位有误。

    2.1K20

    JS中的隐式类型转换规则

    前言JavaScript作为一门弱类型语言,并不像C、Java那样有明确的类型定义如int、boolean、string、float、double等数据类型,而js同时又是一门脚本语言,逐行编译运行的,...为了防止运行出错,就存在了变量类型的隐式转换本人使用js也有一段时间了,但是对这个转换规则还是有点不理解全面,所以从网上学习回来,总结了这个隐式转换规则,从此以后不再纠结于这个东西,请往下看转换规则运算符的转换规则...string类型的原始类型相加时,先将两边转换为number类型,所以总是会等于NaNundefinde或null与string类型,将前者转换为string类型进行字符串拼接等号(==)两边对比的转换规则...[] == []js 代码解读复制代码console.log(![] == []) // true首先,等式左边为![],存在!,将[]直接转换为boolean类型,![] -> !...代码解读复制代码{};+1于是真正的语句就变成了+1,结果就是1了 只要加个小括号,就能去除二义性了js 代码解读复制代码({})+1)

    10610

    JS数据类型转换规则显示类型转换

    JS数据类型 基础类型 String Boolean Number Symbol Undefine Null(typeof(null) === "object") 复合类型: 对象 Object(Array..., Json) 显示类型转换 Number的原始类型转换规则 数值转换后还是数值 字符串如果可以解析为数值则为数值, 空字符串为0, 无法解析的字符串为NaN 布尔转数值, true转为1, false...Number的对象类型转换规则 传入实例M, 先调用M的valueOf(), 如果返回值V为基本数据类型, 则直接使用Number(V), 求最终返回值 如果T不属于基本数据类型, 则调用M的toString...String的原始类型转换规则 数值(Number)转为相应的字符串 字符串(String) 转换后还是字符串 布尔值(Boolean)转换规则: true => 'true', false=> 'false...String 的对象类型转换规则 与Number的对象转换规则类似, 区别是: 先调用对象的toString(), 然后再调用valueOf() 其实正常情况下, 对象调用自身的toString()

    2.7K50

    新旧身份证(继承)

    也即:如果余数是3,身份证第18位就是9。如果余数是2,身份证的最后一位号码就是X。...主函数定义一个派生类对象,并用派生类对象调用check(),若返回false则输出“illegal id”否则调用print()输出身份证信息。check()对身份证合法性进行验证的规则: 1....确认15位身份证正确. 2. 确认18位号码是从15位号码扩展的,且第18位校验码正确. 3. 身份证中的出生日期合法. 4. 身份证号码中不含非法字符. 5. 身份证号码的长度正确. 6....身份证目前处于有效期内. (2017年5月10日) 输入 测试数据的组数 t 第一个人姓名、出生日期年月日、15位身份证号码、18位身份证号码、签发日期年月日、有效期(100年按长期处理) 第二个人姓名...、出生日期年月日、15位身份证号码、18位身份证号码、签发日期年月日、有效期(100年按长期处理) ......

    28030

    为什么Next.js 13会改变游戏规则?

    这意味着你可以使用React来构建你的应用程序,而Next.js提供了额外的工具和功能,使这个过程更容易。 Next.js的主要好处之一是,它可以实现服务器端渲染。...Next.js 还内置了一个开发服务器和一个用于将应用程序部署到生产环境的工具链。 现在你对Next.js有了更多的了解,让我们来探索Next.js 13版本给我们带来了什么。...Next.js 13有什么新内容? Next.js 13 是首个全面尝试整合 React 的两个身份 —— UI 库和架构的版本。那么,它有哪些新特性呢?...此外,一个路由的page.js,如。 layout.js- 一个路径及其子路径系统。 loading.js- 一个基于React的即时加载系统。...它们可以改变游戏规则并承诺速度极快,但是它们也有一些权衡[2]。

    2.9K30
    领券