인터넷 웹 사이트를 구축 할 때는 개인 정보를 등록 할 때 종종 ID 번호를 사용합니다. 우리는 신분증을 확인해야합니다. 그렇지 않으면 다른 사람들이 단순히 숫자를 입력하여 전달 하여이 웹 사이트가 매우 헛된 것으로 느껴집니다.
ID 번호에 대한 규칙이 있습니다.
구조와 형태
1. 숫자의 구조
시민권 번호는 17 자리 온톨로지 코드와 1 자리 검증 코드로 구성된 기능 조합 코드입니다. 계약 순서는 왼쪽에서 오른쪽으로 : 6 자리 주소 코드, 8 자리 출생 날짜, 3 자리 시퀀스 코드 및 1 자리 검증 코드입니다.
2. 주소 코드
코딩 객체의 영주권이 위치한 카운티 (City, Banner, District)의 행정부 코드는 GB/T2260의 조항에 따라 구현되어야한다.
3. 생년월일
인코딩 된 물체의 출생 연도, 월 및 일을 나타냅니다. GB/T7408의 조항에 따라 실행됩니다. 연도, 월 및 당일 코드 사이에는 분리기가 없습니다.
4. 시퀀스 코드
동일한 주소 코드로 식별 된 영역 내에서 같은 해, 월 및 일에 태어난 사람들에게 할당 된 시퀀스 번호를 나타냅니다. 시퀀스 코드의 홀수는 남성에게 할당되며 숫자는 여성에게 할당됩니다.
5. 확인 코드
첫 번째 17 자리 숫자 숫자 코드에 따르면, 검증 코드는 ISO 7064 : 1983에 따라 계산되었습니다. MOD 11-2 검증 코드.
계산 방법
1. 이전 ID 번호의 17 자리 수에 다른 계수를 곱하십시오. 첫 번째 위치에서 열일곱 번째 위치로의 계수는 다음과 같습니다.
2.이 17 자리 수와 계수를 곱한 결과를 추가하십시오.
3. 첨가를 사용하고 11로 나누어 나머지가 무엇인지 확인하십시오.
4. 나머지는 11 개의 숫자 만 가질 수 있습니다 : 0-1-2-3-4-5-6-7-8-9-10. 그에 해당하는 마지막 ID 카드의 수는 1-0-X-9-8-7-6-5-4-3-2입니다.
5. 위에서부터 나머지가 3 인 경우 ID 카드의 18 번째 숫자가 9 개가 나타납니다. 해당 숫자가 2 인 경우 ID 카드의 마지막 숫자는 로마 숫자 x입니다.
예를 들어, 남자의 ID 번호는 [53010219200508011X]이 ID 카드가 법적 ID 카드인지 확인해 봅시다.
먼저 우리는 첫 17 비트 [(5*7)+(3*9)+(0*10)+(1*5)+(0*8)+(2*4)+(1*2)+(9*1)+(2*6)+(0*3)+(0*7)+(5*9)+(0*10)+(8)+(0)+(1*4) ~ (0*8)+(0)+(0)+(0*8)+(0*3)+(0*3)+(0*3)의 제품의 합계를 얻습니다. 189, 그리고 189를 189로 나누는 것은 189/11 = 17 ---- 2입니다. 즉, 나머지 숫자는 2입니다. 마지막으로 해당 규칙을 통해 나머지 2에 해당하는 검증 코드가 X임을 알 수 있습니다.
위의 것은 Baidu 백과 사전에서 발췌 한 것입니다.
이것은 온라인에서 발견 된 관련 정보 사진입니다.
알려진 정보를 바탕으로 JS 에서이 방법의 내부 구현을 쓸 수 있습니다. 첫 17 비트 검증은 구현하기가 더 쉽기 때문에 많이 말하지 않고 마지막 숫자의 검증 코드에 중점을 둡니다.
코드 사본은 다음과 같습니다.
// ID 번호 확인
함수 isidcard (cardid) {
// Identity Card 정규 표현식 (18 비트)
var isidcard2 =/^[1-9]/d {5} (19/d {2} | [2-9]/d {3}) ((0/d) | (1 [0-2])) ([[0 | 1 | 2]/d) | 3 [0-1]) (/d {4} |/d} x) $/i;
var stard = "10x98765432"; // 마지막 ID 카드의 번호
var first = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; // 1-17 계수
var sum = 0;
if (! isidcard2.test (cardid)) {
거짓을 반환합니다.
}
var year = cardid.substr (6, 4);
var month = cardid.substr (10, 2);
var day = cardid.substr (12, 2);
var 생일 = cardid.substr (6, 8);
if (생일! = dateToString (새 날짜 (년 + '/' + month + '/' + day))) {// 날짜가 합법적인지 확인
거짓을 반환합니다.
}
for (var i = 0; i <cardid.length -1; i ++) {
sum += cardid [i] * 첫 번째 [i];
}
var result = sum % 11;
var last = stard [결과]; // 계산 된 마지막 ID 번호입니다
if (cardid [cardid.length -1] .touppercase () == last) {
진실을 반환하십시오.
} 또 다른 {
거짓을 반환합니다.
}
}
// 문자열로 날짜 리턴 날짜 형식 2008080808
함수 dateToString (날짜) {
if (날짜 인스턴스 날짜) {
var 년 = date.getlyear ();
var month = date.getmonth () + 1;
Month = Month <10? '0' + 월 : 월;
var day = date.getDate ();
day = day <10? '0' + Day : Day;
연도 + 달 + 일;
}
반품 '';
}
여기에서 18 자리 ID 카드 만 확인되며 15 자리 1 세대 ID 카드를 사용할 수 없습니다.
여기서 우리는 또한 0230, 0431과 같은 불법 날짜와 같은 날짜의 합법성을 확인하고 확인은 통과되지 않습니다.
또한이 방법을 쉽게 검증하기 위해 jQuery Validate 에이 방법을 추가 할 수 있습니다.
사용자 정의 jQuery 검증 검증 방법을 작성하십시오
코드 사본은 다음과 같습니다.
// ID 번호 확인
jquery.validator.addmethod ( "Isidcard",
함수 (값, 요소) {
this.optional (요소) ||를 반환하십시오 (isidcard (value));
},
"신원 카드 번호는 불법입니다!");
단순한 데모를 통해 어떻게 작동하는지 확인합시다.
코드 사본은 다음과 같습니다.
<! doctype html>
<html>
<헤드>
<meta http-equiv = "content-type"content = "text /html; charset = utf-8" />
<title>
ID 번호 확인
</제목>
<script src = "http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js">
</스크립트>
<script src = "http://www.w3cschool.cc/try/demo_source/static/js/jquery.validate.js">
</스크립트>
<script type = "text/javaScript">
$ (function () {
$ ( "#form1"). Validate ({
규칙 : {
txtidcard : "isidcard"
}
});
});
// ID 번호 확인
함수 isidcard (cardid) {
// Identity Card 정규 표현식 (18 비트)
var isidcard2 =/^[1-9]/d {5} (19/d {2} | [2-9]/d {3}) ((0/d) | (1 [0-2])) ([[0 | 1 | 2]/d) | 3 [0-1]) (/d {4} |/d} x) $/i;
var stard = "10x98765432"; // 마지막 ID 카드의 번호
var first = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; // 1-17 계수
var sum = 0;
if (! isidcard2.test (cardid)) {
거짓을 반환합니다.
}
var year = cardid.substr (6, 4);
var month = cardid.substr (10, 2);
var day = cardid.substr (12, 2);
var 생일 = cardid.substr (6, 8);
if (생일! = dateToString (새 날짜 (년+'/'+month+'/'+day))) {// 날짜가 합법적인지 확인
거짓을 반환합니다.
}
for (var i = 0; i <cardid.length -1; i ++) {
sum += cardid [i] * 첫 번째 [i];
}
var result = sum % 11;
var last = stard [결과]; // 계산 된 마지막 ID 번호입니다
if (cardid [cardid.length -1] .touppercase () == last) {
진실을 반환하십시오.
} 또 다른 {
거짓을 반환합니다.
}
}
// 문자열로 날짜 리턴 날짜 형식 2008080808
함수 dateToString (날짜) {
if (날짜 인스턴스 날짜) {
var 년 = date.getlyear ();
var month = date.getmonth () + 1;
Month = Month <10? '0' + 월 : 월;
var day = date.getDate ();
day = day <10? '0' + Day : Day;
연도 + 달 + 일;
}
반품 '';
}
// jQuery validate ID 번호 확인
jquery.validator.addmethod ( "Isidcard",
함수 (값, 요소) {
this.optional (요소) ||를 반환하십시오 (isidcard (value));
},
"신원 카드 번호는 불법입니다!");
</스크립트>
</head>
<body>
<form id = "form1"method = "get"action = "">
<입력 유형 = "text"id = "txtIdcard"name = "txtIdcard" />
<p>
<입력 유형 = "제출"값 = "제출" />
</p>
</form>
</body>
</html>
Baidu Encyclopedia에 제공된 ID 번호 53010219200508011X로 확인하십시오.
확인을 전달할 수 있습니다. x를 0으로 변경하십시오
확인이 실패하면 우리가 쓴 검증 방법이 성공적입니다! 믿지 않으면 ID 번호를 사용해보십시오. JS를 사용하여 ID 번호를 쉽게 확인하는 것으로 나타났습니다.
위의 것은이 기사에 관한 모든 것입니다. 나는 당신이 그것을 좋아하기를 바랍니다.