• Stars
    star
    224
  • Rank 177,792 (Top 4 %)
  • Language
    JavaScript
  • Created about 9 years ago
  • Updated about 1 year ago

Reviews

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

Repository Details

校验身份证是否合法,获取身份证详细信息

校验身份证[第二代]合法性,获取身份证详细信息

Build Status via Travis CI Coverage Status NPM version

安装:npm install idcard

API

verify

info

generateIdcard

constellation

getAge

upgrade15To18

verify:校验身份证合法性,返回boolean值
var idCard = require('idcard');
/**
* param:idcard(string)
* return boolean
*/
idCard.verify('440882199100201232');//false
info:获取身份证详细信息,返回一个json对象,key:valid为boolean值,代表身份证是否合法。
var idCard = require('idcard');
/**
* param:idcard(string)
* return object
*/
idCard.info('440882199100201232');

返回结果:

//身份证合法时返回的数据结构
{ 
	valid: true,//身份证是否合法的标志
	gender: 'M',//M->男,F->女
	birthday: 19910210,//
	province: {
		code: '440000',//行政区域编码
		text: '广东省' 
	},
	city: { 
		code: '440800', 
		text: '湛江市' 
	},
	area: { 
		code: '440882', 
		text: '雷州市' 
	},
	cardType: 1,//身份证类型,1->大陆,2->港澳台
	cardText: '大陆',
	address: '广东省湛江市雷州市',
	age:24,
	constellation:'水瓶'//星座 
}
//身份证非法时返回的数据结构
{
	valid: false
}
generateIdcard:随机生成一个合法身份证号码,返回身份证号码
var idCard = require('idcard');
/**
* return string
*/
idCard.generateIdcard();//返回随机身份证号码
constellation:根据生日返回星座
var idCard = require('idcard');
/**
* return string
*/
idCard.constellation(19910210);//水瓶
idCard.constellation('1991/02/10','/');//水瓶
getAge:根据生日返回年龄
var idCard = require('idcard');
/**
* return number
*/
idCard.getAge(19910210);//25 (调用时的日期:2016/03/23)
upgrade15To18:身份证15位升级到18位
var idCard = require('idcard');
/**
* return Object
*/
var result = idCard.upgrade15To18(422201720809227);
result结构:
{
	code: 0,
	msg: '身份证15位升级到18位成功',
	card: '18位的身份证'
}

身份证中第十八位数字的计算方法

  • 将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2;
  • 将这17位数字和系数相乘的结果相加;
  • 用加出来和除以11,看余数是多少
  • 余数只可能有0 、1、 2、 3、 4、 5、 6、 7、 8、 9、 10这11个数字。其分别对应的最后一位身份证的号码为1、0、X、9、8、7、6、5、4、3、2;
  • 通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2。
  • 第一代身份证十五位数升为第二代身份证十八位数:第一步,在原十五位数身份证的第六位数后面插入19 ,这样身份证号码即为十七位数;第二步,按照国家规定的统一公式计算出第十八位数,作为校验码放在第二代身份证的尾号。

身份证倒数第二位:偶数性别为女,奇数为男

更新区域代码脚本 (4.1.0)

  1. 将上一个版本的area.json, city.json, province.json, 拷贝到province_city_area_code.js文件中的provinces, citys, areas变量
  2. node bin/get_gov_data.js http://www.mca.gov.cn/article/sj/tjbz/a/2017/201801/201801151447.html (此步骤自动爬取相应链接区域代码并添加到history文件夹内, 链接替换为相应年份的区域代码网址)
  3. node bin/gen_gov_data.js (此步骤将history文件夹内所有code汇总成一份govCode.json文件)
  4. node bin/gen_area_data.js (注意, 此脚本会覆盖原先的json文件, 请先做好备份)
  5. node bin/checkDiff.js可以看到更新情况

版本更新

  • 4.1.0 更新自动化脚本, 更改更新区域代码步骤, 新增history文件夹, 保留历史(1980~????)以来所有行政区域代码
  • 4.0.0 区域代码更新自动化,感谢SwenChan同学贡献代码
  • 3.4.0 升级行政区域代码, 同时将行政区域代码抽出, 独立为三个文件(province, city.json, area.json), 添加增量更新脚本
  • 3.3.1 升级行政区划代码至2016年7月31日
  • 3.3.0 新增接口upgrade15To18,用于将15身份证升级到18位
  • 3.2.0 新增接口getAge,用于返回年龄
  • 3.1.0 info接口增加返回星座,新增接口constellation,用于获取星座
  • 3.0.0 更新地级市和县级市的行政区域代码,同时将行政区域代码独立出来。
  • 2.0.0 版本完善info接口,对于身份证校验不准确时也返回相应的归属地信息。

附录:行政区域代码

More Repositories

1

bankcardinfo

根据银行卡卡号查询银行类型和卡类型
JavaScript
562
star
2

phone-service

手机号查询运营商,查询归属地
JavaScript
72
star
3

wechat-develop

微信公众平台接入例子
48
star
4

weixin_js

JavaScript
41
star
5

redlock-node

a simple redis lock base on nodejs.
JavaScript
34
star
6

access-token-api

A simple api access token support count and ttl,which base on nodejs. It can protect your api,prevent CSRF attacks, api called count with ttl.
JavaScript
26
star
7

wechat-develop-code

微信开放平台接入Code Demo
JavaScript
25
star
8

yeepay

易宝支付 - 一键支付sdk
JavaScript
22
star
9

vue-2.0-vue-router-2.0-vuex-2.0-

vue(2.0)+vue-router(2.0)+vuex(2.0)+webpack demo
JavaScript
20
star
10

n-pay

支付聚合平台
JavaScript
15
star
11

red_package_rain

红包雨
JavaScript
8
star
12

random

a simple probability generator, support nodejs and browser .(按权重随机概率元素,支持服务端&浏览器)
JavaScript
8
star
13

avoid-multi-request-from-client-

JavaScript
7
star
14

npm

如何发布&管理npm包
5
star
15

linux-qq

linux qq and wechat client
5
star
16

oauth2-wechat-develop

以接入微信开放平台为例讲解oauth2原理
4
star
17

n-crypto

加密解密模块,MD5,RSA
JavaScript
4
star
18

web-frontend-interview

广州财略金融信息科技有限公司前端机试题
3
star
19

store-ttl

a simple key value store that support ttl, and you can custom setter,getter,remove function such as redis.
JavaScript
3
star
20

gulp-custom-css-urls

a plugin for gulp to custom you image url inline css file, and support output image file, then you can upload image file to Cloud CDN.
JavaScript
3
star
21

gulp-cdn-service

a gulp plugin for upload file to cdn server , currently only supports qiniu.
JavaScript
3
star
22

baofoo

宝付认证支付 SDK
JavaScript
2
star
23

sencha-mvc-demo

sencha-mvc-demo
JavaScript
2
star
24

wechat-develop-local-debug

微信开放平台接入本地调试
2
star
25

static-file-manage

node 项目中 进行静态文件管理
2
star
26

chrome-open-direct

google research link open direct (chrome搜索结果直接打开,避免经过google跳转)
JavaScript
2
star
27

minievent

事件触发
JavaScript
2
star
28

karma-demo

karma unit test demo
JavaScript
2
star
29

union_flow

联通流量专区充值接口
JavaScript
2
star
30

angular-wepack-gulp-demo

JavaScript
2
star
31

weixin-wrap

微信授权&api
JavaScript
2
star
32

protractor-scenario

protractor scenario test
JavaScript
2
star
33

cross-demo

JavaScript
2
star
34

karma-unit

karma unit test demo
JavaScript
2
star
35

pay-plugin

第三方支付插件(目前集成了连连支付,易宝支付,PP钱包)
JavaScript
2
star
36

imageloader

image preload and update loading status. 图片预加载,显示图片加载进度。
JavaScript
2
star
37

angular-slider

JavaScript
1
star
38

llpayauth

连连实名认证,连连支付网+,SDK,Nodejs,Auth,realName.
JavaScript
1
star
39

vim

1
star
40

SoftKeyboardPlugin

Java
1
star
41

aes-bcrypt

aes-bcrypt
JavaScript
1
star
42

link

1
star
43

code-snippet

JavaScript
1
star
44

hexo-github-page

CSS
1
star
45

navyxie.github.io

navy github home
HTML
1
star
46

liusha

流沙流量充值接口
JavaScript
1
star
47

webpack

JavaScript
1
star
48

note

1
star
49

yeepay-realname

JavaScript
1
star
50

Phaser-demo

1
star
51

paypalm-flashbean

pp钱包支付 闪豆支付
JavaScript
1
star
52

hapi-demo

JavaScript
1
star
53

shell

Shell
1
star
54

paypalm

pp钱包支付
JavaScript
1
star
55

phantomjs-demo

phantomjs demo
JavaScript
1
star
56

threejs-demo

JavaScript
1
star
57

global-node-moduel

how to write a global node moduel
JavaScript
1
star
58

front-end-lesson

考拉前端入门速成班
HTML
1
star
59

how-to-plugin-development

如何进行插件化开发?插件化开发可提高代码可读性,提高代码可维护性,降低代码低耦性,提高代码质量。
1
star
60

css-layout

HTML
1
star
61

plugin-dev

简易化的插件开发管理工具
JavaScript
1
star
62

async-lock

a simple node async lock that support ttl base memory database such as redis.(node异步锁)
JavaScript
1
star
63

travis-coveralls-demo

travis-ci and coveralls.io demo
1
star
64

design-pattern

javascript design pattern
JavaScript
1
star
65

react-native-note

react-native note
1
star
66

error

frontend error monitor,前端页面出错监控。
JavaScript
1
star
67

eggjs-example

JavaScript
1
star
68

angular-single-app

JavaScript
1
star
69

webpack-vue

webpack vue demo
JavaScript
1
star
70

njs

navy js
JavaScript
1
star
71

concurrent-waterfall

简单的并发流控制
JavaScript
1
star
72

react-demo

react demo js
JavaScript
1
star
73

es6_demo

es6
JavaScript
1
star
74

withdraw-plugin

提现插件
JavaScript
1
star
75

html-tpl

JavaScript
1
star
76

frontend-develop-deploy

前端的开发与部属
1
star