완벽 한 신분증 정규 표현 식

8466 단어
실 현 된 기능: 15 비트 와 18 비트 신분증 번 호 를 지원 하고 주소 인 코딩, 생년월일, 검사 위치 검증 을 지원 합 니 다.
/ * 중화 인민공화국 국가 표준 GB 11643 - 1999 에서 공민 신분 번호 에 관 한 규정 에 따라 공민 신분 번 호 는 특징 조합 코드 로 17 자리 디지털 본체 코드 와 1 자리 디지털 검사 코드 로 구성 된다.배열 순 서 는 왼쪽 에서 오른쪽으로 여섯 자리 숫자 주소 코드, 여덟 자리 숫자 생년월일 코드, 세 자리 숫자 순서 코드 와 한 자리 숫자 검사 코드 로 나 뉜 다.주소 코드 는 인 코딩 대상 이 상주 호적 이 있 는 현 (시, 기, 구) 의 행정구 역 코드 를 나타 낸다.생년월일 코드 는 인 코딩 대상 이 태 어 난 해, 월, 일 을 나타 내 는데 그 중에서 연 도 는 네 자리 숫자 로 표시 하고 년, 월, 일 사이 에는 구분자 가 필요 없다.순서 코드 는 같은 주소 코드 가 표 시 된 지역 범위 내 에서 같은 해, 월, 일 에 태 어 난 사람 에 대한 순서 번 호 를 나타 낸다.순서 코드 의 기 수 는 남성 에 게, 우 수 는 여성 에 게 나 뉜 다.검사 코드 는 앞의 17 자리 숫자 에 따라 ISO 7064: 1983. MOD 11 - 2 검사 코드 에 따라 계 산 된 검사 코드 입 니 다.생년월일 계산 방법.15 명의 신분증 번 호 는 먼저 출생 년 을 4 자리 로 확대 한다. 간단 한 것 은 19 또는 18 을 추가 하 는 것 이다. 그러면 1800 - 1999 년 에 태 어 난 모든 사람 을 포함한다.2000 년 이후 에 태 어 난 사람 은 모두 18 명 일 것 입 니 다. 그런 고민 은 없습니다. 1800 년 전에 태 어 난 사람 은 언제 쯤 주민등록번호 가 없 을 것 입 니까? ⊙ ⊙ ⊙ ⊙ b 땀... 다음은 정규 표현 식 입 니 다. 생년월일 1800 - 2099 (18 | 19 | 20)? \d {2} (0 [1 - 9] | 1 [12]) (0 [1 - 9] | [12] \ \ d | 3 [01]) 신분증 정규 표현 식 / ^ \ d {6} (18 | 19 | 20)? \d {2} (0 [1 - 9] | 1 [012]) (0 [1 - 9] | [12] \ d | 3 [01]) \ d {3} (\ d | X) $/ i 15 비트 검사 규칙 6 비트 주소 코드 + 6 비트 생년월일 + 3 비트 순서 번호 18 비트 검사 규칙 6 비트 주소 코드 + 8 비트 생년월일 + 3 비트 순서 번호 + 1 비트 검사 규칙 공식: ∑ (ai×와 이) (mod 11)..............................................................................ai - i 위치 에 있 는 번호 문자 값 을 표시 합 니 다.Wi - i 위치 상의 가중 인 자 를 보 여 줍 니 다. 그 수 치 는 공식 Wi = 2 ^ (n - 1) (mod 11) 에 따라 계 산 됩 니 다.
"북경", 12: "천진", 13: "하북", 14: "산 서", 15: "내몽고", 21: "랴오닝", 22: "지 린", 23: "헤 이 룽 장", 31: "상하 이", 32: "강 소", 33: "강", 34: "절강", 34: "안 후 이", 35: "복 건", 36: "강서", 37: "산동", 41: "산동", 41: "하남", 42: "후 베 이", 43: "호 남", 44: "광 둥", 45: "광 시", 46: "광 시", 46: "하 이 난", 50: "충 칭", 50: "충 칭", "50:" 충 칭 ", 42:" 후 베 이 ", 43:" 후 베 이 후 베 이 ", 51:" 사천 ", 52:" 귀주 ", 53:"운남", 54: "티베트", 61: "섬서", 62: "감숙성", 63: "청해", 64: "영하", 65: "신장", 71: "대만", 81: "홍콩", 82: "마카오", 91: "외국"}; var tip = "; var pass = tru; if (! code | |! / ^ \ d {6} (18 | 19 | 20) (18 | 19 | 19 | 20)? \ d {2} (0 [1 - 9] | 1 [1] | 1 [12]]) (0 [1 - 9] | [12] | [12] \ \ \ d | 3 [01]) \ d {3} (\ d {3} (\ d {6} 18 | 19 | 19 | 20)? \ d {2} (0 [1 - 1] | 1 - 1 | X) $/ i. test (code) {tip =" 주민등록번호 형식 오류 "; pass = false;} elseif (! city [code. substr (0, 2)]){tip = "주소 인 코딩 오류"; pass = false;} else {/ 18 비트 신분증 은 마지막 검증 비트 if (code. length = = 18) {code = code. split ('); / ∑ (ai) 를 검증 해 야 합 니 다.×(mod 11) / / 가중 인자 var factor = [7, 9, 10, 5, 8, 8, 4, 4, 4, 2, 1, 6, 3, 7, 9, 9, 10, 5, 5, 8, 8, 4, 4, 2]; / / 검사 위치 var parity = [1, 0, 'X', 9, 8, 7, 7, 6, 5, 5, 4, 3, 2]; var sum = 0; var ai = 0; var wi wi = 0; for (var i = 0; i < 17; i + + + +) {ai = code [i = code [i]; wi = fact인자 []; sum + + = * sum + = * wi; var wi; var wi; var wi; var wi; var wi; var wi = 0; var wi;; var i = 0; i < 17 마지막 = parity [sum% 11]; if (parity [sum% 11]! = code [17]) {tip = "검사 위치 오류 "; pass = false;}} if (! pass) alert (tip); return pass;} var c = '1309819932253466'; var res = Identity CodeValid (c);
원본 링크:https://blog.csdn.net/zjslqshqz/article/details/73571736
JS 정규 표현 식 중국 대륙 신분증 번호 검증  /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/
/ / 정규 표현 식: var idcardReg = / ^ [1 - 9] \ \ \ d {7} (0 \ \ \ \ \ d) | (1 [0 - 2]) ([0 | 1 | 2] \ \ \ \ \ \ d) | 3 [0 - 0 - 2] \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ d {5} [1 - 9] \ \ \ \ \ \ \ d {3} (0 \ \ \ d)} ((0 \ \ \ \ \ d) | 3 [0 - 0 - 2]] \ \ d | 2] \ \ \ \ d \ \ \ \ \ \ d 3 [0 - 0 - 0 - 1] \ \ \ \ \ \ d \ \ \ \ \ d [0 - 0 - 1] \ \ \ \ \ d) \ \ \ \ \ \ \ \ \ \ \ cardReg. test (cardNo) {/ 합 법}
/ / 주민등록번호: valuesconst province = values. substring (0, 2) / / 성 const city = values. substring (0, 4) / / 시 const area = values. substring (0, 6) / / 구 const sex = values. substring (16, 17) / / 성별
원본 링크:https://blog.csdn.net/genius_yym/article/details/79670159
xxxxxx yyyy MM dd 375 0     십팔 위
xxxxxx    yy MM dd   75 0     15 위
지역: [1 - 9] \ d {5} 년 전 두 분: (18 | 19 | ([23] \ d)           1800 - 3999 년 이후 두 분: \ d {2} 월: (0 [1 - 9]) | (10 | 11 | 12) 일수: ([0 - 2] [1 - 9]) | 10 | 20 | 30 | 31)         윤년 은 29 + 를 금지 할 수 없다.
세 자리 순서 번호: \ d {3}
두 순서 번호: \ d {2}
 
검사 코드: [0 - 9Xx]
18 위: ^ [1 - 9] \ d {5} (18 | 19 | ([23] \ \ d) \ d {2} ((0 [1 - 9]) | (10 | 11 | 12) ([0 - 2] [1 - 9]) | 10 | 20 | 30 | 31) \ d {3} [0 - 9Xx] $
15 위: ^ [1 - 9] \ d {5} \ d {2} ((0 [1 - 9]) | (10 | 11 | 12) ([0 - 2] [1 - 9]) | 10 | 20 | 30 | 31) \ d {2} [0 - 9xx] $
총:
 
(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}[0-9Xx]$)
원본 링크:https://blog.csdn.net/wei549434510/article/details/50596207
/ * 중화 인민공화국 국가 표준 GB 11643 - 1999 에 따라시민 신분 번호 에 관 한 규정 에 따 르 면 시민 신분 번 호 는 특징 조합 코드 로 17 비트 디지털 본체 코드 와 1 비트 디지털 검사 코드 로 구성 된다. 배열 순 서 는 왼쪽 에서 오른쪽으로 6 비트 디지털 주소 코드, 8 비트 디지털 생년월일 코드, 3 비트 디지털 순서 코드 와 1 비트 디지털 검사 코드 이다. 주소 코드 는 인 코딩 대상 이 상주 하 는 호구 가 있 는 현 (시, 깃발, 구) 을 나타 낸다.생년월일 코드앞의 17 자리 숫자 에 따 르 면 ISO 7064: 1983. MOD 11 - 2 체크 코드 로 계 산 된 체크 코드 입 니 다. 생년월일 계산 방법 입 니 다. 15 명의 신분증 번 호 는 먼저 생년월일 을 4 자리 로 확장 합 니 다. 간단 한 것 은 19 또는 18 을 추가 하 는 것 입 니 다. 이렇게 하면 1800 - 1999 년 에 태 어 난 모든 사람 을 포함 합 니 다. 2000 년 이후 에 태 어 난 사람 은 18 명 일 것 입 니 다. 이런 고민 없 이 1800 년 전에 태 어 났 을 것 입 니 다.태 어 났 으 면 그 때 는 주민등록번호 도 없 었 을 텐 데 이 동 동 동, ⊙ 배 부 른 땀... 다음은 정규 표현 식: 생년월일 1800 - 2099 (18 | 19 | 20)? \ \ d {2} (0 [1 - 9] | 1 [12] [1 - 9] | [12] \ d | 3 [01]) 신분증 정규 표현 식 / ^ \ d {6} (18 | 19 | 20)? \ d {2} (0 [1 - 9] | 1 [1 - 1] | 1 [12] | [12] \ d | 3 [01]] \ d | 3 [01]) \ d {3} (\ d {6} (18 | 19 | 19 | 20)? \ d {2} (0 [1 - 1] [1 - 9] | 1 [12]] [12] | [12] | | X)$/ i 15 비트 검사 규칙 6 비트 주소 인 코딩 + 6 비트 생년월일 + 3 비트 순서 번호 18 비트 검사 규칙 6 비트 주소 인 코딩 + 8 비트 생년월일 + 3 비트 순서 번호 + 1 비트 검사 위치 규칙 공식: ∑ (ai)×와 이) (mod 11)......................................................................계산 결과. i 18 17 16 15 13 12 11 9 9 7 5 3 1 Wi 7 9 10 5 8 2 1 3 3 7 9 9 10 8 4 2 1 * / / 주민등록번호 합 법성 검증 / / 지원 15 위 와 18 위 주민등록번호 / 지원 주소 번호, 생년월일, 검사 위치 검증 기능 Identity Code Valid (code) {var city = {11: "북경", 12: "천진", 13: "하북", 14: "산 서", 15: "내 몽골", 21: "랴오닝", 22: ""길 림", 23: "헤 이 룽 장", 31: "상하 이", 32: "강 소", 33: "절강", 34: "안 후 이", 35: "복 건", 36: "복 건", 36: "강서", 37: "산동", 41: "하남", 42: "후 베 이", 43: "호 남", 44: "광 둥", 45: "광서", 46: "하 이 난", 50: "충 칭", 51: "쓰 촨", 52: "귀주", 53: "윈 난", 54: "티베트", 61: "산 시", 62: "간 쑤 성", 63: "칭 하 이", 63: "청해", 64: "닝 샤", 65: "닝 샤", 65: "신장, 71:", 71: "신장, 71" 대만 ", 81:" 홍콩 ", 82:" 마카오 ", 91:" 국내외"}; var tip ="; "; var pass = true; (! code| |!! / / \ \ \ \ d {6} (18 | 19 | 20)? \ \ d {2} (0 [1 - 9] | 1 [012]]] (0 [1 - 9] | | | | | | |! / / \ \ \ \ d {6} (\ d | X) $/ i. test (코드)) {tip =" "주민등록번호 형식 오류"; pass = 잘못된 "; pass = false;} elseif (! city [code. substr (0, 2)]]] \ \ d {{3} (\ \ d | X) $/ / /. test (코드) $/. test (코드) {tip =" (코드) {tip = "주민등록번호 형식 오류"; pass else {/ 18 비트 신분증 은 마지막 검증 위치 if (code. length = 18) 를 검증 해 야 합 니 다.{ code = code.split(''); //∑(ai×(mod 11) / / 가중 인자 var factor = [7, 9, 10, 5, 8, 8, 4, 4, 4, 2, 1, 6, 3, 7, 9, 9, 10, 5, 5, 8, 8, 4, 4, 2]; / / 검사 위치 var parity = [1, 0, 'X', 9, 8, 7, 7, 6, 5, 5, 4, 3, 2]; var sum = 0; var ai = 0; var wi wi = 0; for (var i = 0; i < 17; i + + + +) {ai = code [i = code [i]; wi = fact인자 []; sum + + = * sum + = * wi; var wi; var wi; var wi; var wi; var wi; var wi = 0; var wi;; var i = 0; i < 17 마지막 = parity [sum% 11]; if (parity [sum% 11]! = code [17]) {tip ="검사 위치 오류"; pass = false;}} if (! pass) alert (tip); return pass;} var c = '1309819932253466'; var res = Identity Code Valid (c);

좋은 웹페이지 즐겨찾기