Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    china_id_validatorpublic

    IDValidator.js

    中国个人身份证号码验证器(JS版)

    Chinese Personal ID Card Validation

    支持15位与18位身份证号

    支持 AMD/CMD/CommonJS, 或浏览器直接使用

    API

    isValid() 验证号码是否合法,合法返回true,不合法返回false

    getInfo() 号码合法时返回分析信息(地区、出生日期、性别、校验位),不合法返回false

    makeID() 伪造一个符合校验的ID

    Getting Start

    浏览器端直接使用

    <script type="text/javascript" src="path/to/IDValidator/IDValidator.min.js" charset="utf-8" ></script>
    <script type="text/javascript" src="path/to/IDValidator/GB2260.min.js" charset="utf-8" ></script>
    <script type="text/javascript">
     
        //新建普通实例 
        var Validator = new IDValidator();
     
        //或使用带地址码实例,需要引入GB2260 
        var Validator = new IDValidator( GB2260 );
     
    </script> 

    AMD / RequireJS

    requirejs.config({
        paths: {
            IDValidator:'path/to/IDValidator',
            GB2260:'path/to/GB2260'
        }
    });
    require(["IDValidator","GB2260"], function(IDValidator,GB2260) {
     
        var Validator = new IDValidator();
     
        //或使用地址库 
        var Validator2 = new IDValidator( GB2260 );
     
    });
     

    CMD / SeaJS

    define(function(require, exports, module) {
        var IDValidator = require('path/to/IDValidator');
        var Validator = new IDValidator();
     
        //或使用地址库 
        var GB2260 = require('path/to/GB2260');
        var Validator2 = new IDValidator( GB2260 );
    });

    CommonJS / Node

    var IDValidator = require('path/to/IDValidator');
    var GB2260 = require('path/to/GB2260');
     
    var Validator = new IDValidator();
     
    //或使用地址库 
    var Validator2 = new IDValidator( GB2260 );
     

    提示:所有API引入IDValidator.js就可以使用。

    GB2260.js为GB 2260地址码数据,用于分析地址信息,在实例化时传入,可以不使用。

    压缩后:

    IDValidator.min.js 3K

    GB2260.min.js 140K

    使用方法:

    实例化查询器:

    var Validator = new IDValidator();

    实例化时可传入GB2260,信息处理中将加入地址信息

    var Validator = new IDValidator( GB2260 );

    查询身份证号是否合法

    //JS中长数字有精度丢失问题, 请使用字符串传值 
    var id = "123456789012345678";
     
    Validator.isValid( id );
    //合法号码return true, 不合法return false 

    注:

    1. JS中长数字有精度丢失问题, 长数字请使用字符串传值

    2. 由于15位身份证号不含校验码,只能依据地址与日期是否存在进行判断

    获取身份证号信息

    Validator.getInfo( id );
    /* 
     * 号码有效时返回内容示例:
     * {
     *   'addrCode': 100101, //地址码信息,
     *   'addr':     '北京市东城区', //地址信息, 只在实例化时传入了GB2260时返回
     *   'birth':    '1988-01-20', //出生年月日
     *   'sex':      1, //性别,0为女,1为男
     *   'checkBit': 'X', //校验位,仅当18位时存在
     *   'length':   18 //身份证类型,15位或18位
     * }
     */

    伪造一个ID

    //制造一个18位ID 
    var ID = Validator.makeID();
     
    //制造一个15位ID 
    var ID = Validator.makeID( true );

    详见 examples .

    参考资料

    GB 11643-1999 公民身份证号码

    GB 2260-1995 中华人民共和国行政区划代码

    License

    MIT

    Keywords

    install

    npm i china_id_validator

    Downloadsweekly downloads

    2

    version

    1.2.0

    license

    MIT

    repository

    github.com

    last publish

    collaborators

    • avatar