一个Nodejs验证身份证号的包

一个Nodejs验证身份证号的包

没搜到就写了一个,也许已经有了只是我没发现。

https://github.com/jysperm/china-id-card-validator https://www.npmjs.com/package/china-id-card-validator

3 回复

一个Nodejs验证身份证号的包

背景

最近需要处理一些涉及中国身份证号的验证工作。在搜索了一些现有的解决方案后,我没有找到合适的库,于是决定自己编写一个。经过一番调研和开发,我最终创建了 china-id-card-validator 这个库,并将其开源。

使用方法

这个库可以方便地安装和使用。首先,你需要通过npm将它安装到你的项目中:

npm install china-id-card-validator

接下来,你可以通过以下方式来验证身份证号:

const validateIDCard = require('china-id-card-validator');

// 验证一个有效的身份证号
const validIDCard = '11010519491231002X';
console.log(validateIDCard(validIDCard)); // 输出: true

// 验证一个无效的身份证号
const invalidIDCard = '11010519491231002Y';
console.log(validateIDCard(invalidIDCard)); // 输出: false

实现原理

该库主要实现了以下几个功能:

  1. 格式检查:验证身份证号是否符合标准格式。
  2. 校验码计算:根据身份证号前17位数字,计算出第18位校验码并进行对比。
  3. 出生日期验证:确保身份证号中的出生日期是合法的。

具体的实现代码如下:

function validateIDCard(idCard) {
    const regex = /^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}(\d|X|x)$/;

    if (!regex.test(idCard)) {
        return false;
    }

    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(idCard.charAt(i), 10) * weights[i];
    }

    const mod = sum % 11;
    const calculatedCheckCode = checkCodes[mod];

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

总结

china-id-card-validator 是一个简单易用的Node.js库,可以帮助你快速验证中国的身份证号。如果你有类似的验证需求,可以考虑使用这个库。当然,如果你有更好的建议或发现任何问题,欢迎提交Issue或Pull Request。

GitHub 地址:https://github.com/jysperm/china-id-card-validator
NPM 地址:https://www.npmjs.com/package/china-id-card-validator


这个库的使用场景是?

对于题目中的问题,我找到了一个现成的Node.js包china-id-card-validator,可以用来验证中国的身份证号。以下是使用该包的示例代码:

const chinaIdValidator = require('china-id-card-validator');

// 验证一个身份证号是否有效
const idCard = '11010519491231002X'; // 示例身份证号

if (chinaIdValidator(idCard)) {
    console.log('身份证号有效');
} else {
    console.log('身份证号无效');
}

上述代码首先导入了china-id-card-validator包,并通过调用该包提供的函数来验证给定的身份证号码是否合法。如果身份证号是有效的,则输出"身份证号有效";否则,输出"身份证号无效"。

这个包会检查身份证号的格式是否正确、校验码是否准确以及出生日期是否合理等。它适用于需要验证中国身份证号合法性的场景,如用户注册、数据录入等。

注意,此包可能不支持港澳台及外国护照等其他类型的证件,如果你的应用需要处理这些情况,请选择合适的库或自行实现相应的验证逻辑。

回到顶部