• Stars
    star
    953
  • Rank 47,957 (Top 1.0 %)
  • Language
    JavaScript
  • License
    Other
  • Created almost 10 years ago
  • Updated almost 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

中国大陆个人身份证号验证 Chinese Mainland Personal ID Card Validation

IDValidator.js Build Status npm version

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

Chinese Mainland 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

Install via npm:

npm i id-validator --save
var IDValidator = require('id-validator');
var GB2260 = require('id-validator/src/GB2260');

var Validator = 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

Validator.isValid( id, 18 );
//强制要求18位ID

注:

  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位
 * }
 */


Validator.getInfo( id,18 );
//强制要求18位ID

伪造一个ID

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

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

详见 examples .

参考资料

GB 11643-1999 公民身份证号码

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

License

MIT