말도 안되는 소리는 그만하시고 바로 코드로 가세요. 댓글에 분석이 아주 명확하니 여기에는 BB가 없을 겁니다.
/*
중화인민공화국 국가 표준 GB 11643-1999의 공민 식별 번호 규정에 따르면 공민 식별 번호는 17자리 신체 코드와 1자리 확인 코드로 구성된 특징적인 조합 코드입니다. 왼쪽부터 순서대로 주소코드 6자리, 생년월일코드 8자리, 시퀀스코드 3자리, 체크코드 1자리입니다.
주소 코드는 코드 대상의 영구 거주지가 위치한 카운티(시, 배너, 구)의 행정 구역 코드를 나타냅니다.
생년월일 코드는 인코딩 객체가 태어난 연, 월, 일을 나타내며, 연도는 4자리로 표현되며, 연, 월, 일 사이에 구분 기호를 사용하지 않습니다.
일련번호는 동일한 주소번호로 식별되는 지역 내에서 동일한 연월일에 태어난 사람에게 부여된 일련번호를 나타냅니다. 시퀀스 코드에서 홀수는 남자에게 할당되고, 짝수는 여자에게 할당됩니다.
체크 코드는 이전 17자리 코드를 기반으로 ISO 7064:1983.MOD 11-2 체크 코드에 따라 계산된 체크 코드입니다.
생년월일을 계산하는 방법.
숫자의 ID 카드 코드는 먼저 생년월일을 4자리로 확장합니다. 19 또는 18을 추가하면 1800년에서 1999년 사이에 태어난 모든 사람이 포함됩니다.
1800년 이후에 태어난 사람은 18자리에 있어야 하는데 이런 문제는 없습니다. 1800년 이전에 태어난 사람은 아마도 당시에는 주민등록번호가 없었을 겁니다. ㅇㅇㅇㅇ...
다음은 정규 표현식입니다:
생년월일 1800-2099 (18|19|20)?d{2}(0[1-9]|1[12])(0[1-9]|[12]d|3[01])
ID 카드 정규 표현식/^d{6}(18|19|20)?d{2}(0[1-9]|1[12])(0[1-9]|[12]d|3 [ 01])d{3}(d|X)$/i
숫자 인증 규칙 6자리 주소 코드 6자리 생년월일 3자리 일련 번호
비트 확인 규칙: 주소 코드 6자리, 생년월일 8자리, 일련 번호 3자리, 검사 숫자 1자리
숫자 규칙 공식 확인: ∑(ai×Wi)(mod 11)………………………………(1)
수식(1)에서:
i---- 검사 코드를 포함하여 왼쪽에서 오른쪽으로 숫자 문자의 위치 순서 번호를 나타냅니다.
ai---- i번째 위치의 숫자 문자 값을 나타냅니다.
Wi----는 i번째 위치의 가중치를 나타내며 그 값은 Wi=2^(n-1)(mod 11) 공식에 따라 계산됩니다.
나는 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
위 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1
*/
//주민등록번호 적법성 확인
//15자리, 18자리 ID번호 지원
//주소 코딩, 생년월일, 숫자 확인 지원
함수 IdentityCodeValid(코드) {
var city={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:"신장",71:"대만",81:" 홍콩 ",82:"마카오",91:"해외"};
var 팁 = "";
var pass= true;
if(!code || !/^d{6}(18|19|20)?d{2}(0[1-9]|1[12])(0[1-9]|[ 12]d|3[01])d{3}(d|X)$/i.test(코드)){
Tip = "신분증 번호 형식이 잘못되었습니다.";
통과 = 거짓;
}
else if(!city[code.substr(0,2)]){
Tip = "잘못된 주소 인코딩";
통과 = 거짓;
}
그렇지 않으면{
//18자리 신분증은 마지막 체크숫자를 확인해야 합니다
if(code.length == 18){
코드 = code.split('');
//∑(ai×Wi)(mod 11)
//가중치
var 인수 = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ];
//숫자 확인
var 패리티 = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2 ];
var 합계 = 0;
var ai = 0;
var wi = 0;
for (var i = 0; i
{
ai = 코드[i];
wi = 요인[i];
합계 = ai * wi;
}
var last = 패리티[합계 % 11];
if(패리티[합계 % 11] != 코드[17]){
Tip = "숫자 오류 확인";
통과 =false;
}
}
}
if(!pass) 경고(팁);
리턴패스;
}
var c = '130981199312253466';
var res= IdentityCodeValid(c);
어때요? 이것은 매우 포괄적인 첫 번째 ID 번호 확인 코드입니다. 온라인에서 찾을 수 있는 다른 확인 코드와는 차원이 다르므로 필요한 경우에만 사용하세요.