0%

js生成身份证号

js生成身份证号

平时测试的时候需要生成完整的用户信息要用到身份证,之前整理的脚本生成的身份证号校验位不对,所以重新写了一个,源码来自网络,部分细节有调整,这个生成的身份证号校验位是对的,但是生成的身份证号是随机的,不是真实的身份证号,只是校验位是对的,所以不要用来做什么非法的事情,仅供测试使用.

下面这个简介由 chatGPT 生成

本文介绍了如何使用JavaScript生成身份证号码。身份证号码在许多应用程序和系统中是必需的,包括身份验证、年龄验证和个人身份标识等。通过学习本文,你将了解到如何使用JavaScript编写一个简单但有效的身份证号码生成器。我们将涵盖生成合法身份证号码的算法和规则,并提供逐步指南来实现这个生成器。此外,我们还将讨论如何生成符合特定地区或国家身份证号码格式的方法,并探讨身份证号码中包含的个人信息的解析。无论你是开发人员还是对身份证号码生成感兴趣的人,本文都将为你提供实用的知识和技巧,帮助你在JavaScript中生成有效的身份证号码。

源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/** 模拟生成 不包含 香港、澳门、台湾、国外 的其他省份省会城市的身份证号
* how : IDCard.init();
* author : win7killer
* date : 2013/12/20
* ver : 1.0
*/
const IDCard = {
aProvince : [11 ,12 ,13 ,14 ,15 ,21 ,22 ,23 ,31 ,32 ,33 ,34 ,35 ,36 ,37 ,41 ,42 ,43 ,44 ,45 ,46 ,50 ,51 ,52 ,53 ,54 ,61 ,62 ,63 ,64 ,65 ],
aCity : ['0101', '0201'],
sId : '',
iBirDate : '',
repTimes : 50,
getRandom(iMin,iMax){
return Math.round(Math.random()*(iMax-iMin))+iMin;
},
addZero(str,num){
str=str.toString();
for(let i=0,len=num-str.length;i<len;i++){
str=`0${str}`;
}
return str;
},
init(){
return this.toId();
},
toProvince(){
return this.aProvince[ this.getRandom(0 , this.aProvince.length-1)];//不包含 香港、澳门、台湾、国外
},
toCity(){
return this.aCity[ this.getRandom(0 , this.aCity.length - 1)];
//return '0101';//省会
},
toBirthday(){
let ia=new Date();
let start = new Date() - 50*365*24*60*60*1000;
let end = new Date() - 18*365*24*60*60*1000;
let ageDate = this.getRandom( start , end );
ia.setTime( ageDate );
return ia.getFullYear() + '' + this.addZero( ia.getMonth() + 1 , 2 ) + this.addZero( ia.getDate() , 2 );//随机生日
},
toLast (){
let arrLastFour = [];
for(let i=0; i<4; i++){
arrLastFour.push(this.getRandom(0,9));
}
return arrLastFour.join('');
},
toId(){
for( let j=0; j <50 ; j++){
this.sId = '' + this.toProvince() +''+ this.toCity() + this.toBirthday() + this.toLast();
let iSum = 0;
for (let i = 17; i >= 0; i--) {
iSum += (Math.pow(2, i) % 11) * parseInt(this.sId.charAt(17 - i), 11);
}
if (iSum % 11 == 1) {
console && console.log(this.sId +' //////// ' +j);
return this.sId;
}
}
},
};

使用方法:

1
IDCard.init();

配合前面写的生成姓名,手机号,头像可以生成完整的用户信息,用于测试.