신분증 판단: 15 명 이 든 18 명 이 든 마지막 한 명 은 알파벳 이 고 프로그램 을 써 서 그 중의 년 월 일 을 제시 할 수 있 습 니 다.
1922 단어 주민등록증
15 위 와 18 위 모두 7 위 부터 12 위 까지 가 신분증 이 날짜 유형 이기 때문이다.이렇게 하면 우 리 는 더욱 정확 한 정규 모델 을 설계 하여 신분증 번호 의 날 짜 를 합 법 적 으로 할 수 있다. 그러면 우리 의 정규 모델 은 날짜 부분의 정규 모델 을 [12] [0 - 9] {3} [01] [0 - 9] [123] [0 - 9] 로 수정 할 수 있 고 당연히 날 짜 를 더욱 정확하게 설정 할 수 있다.
jdk 의 java. util. Regex 패키지 에는 정규 클래스, Pattern 과 Matcher 가 있 습 니 다.다음은 구현 코드 입 니 다.
package com.kettas;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Deno {
public static void main(String[] args) {
//
String[] strs = { "130681198712092019", "13068119871209201x",
"13068119871209201", "123456789012345", "12345678901234x",
"1234567890123" };
Pattern p1 = Pattern.compile("(\\d{17}[0-9a-zA-Z]|\\d{14}[0-9a-zA-Z])");
for (int i = 0; i < strs.length; i++) {
Matcher matcher = p1.matcher(strs[i]);
System.out.println(strs[i] + ":" + matcher.matches());
}
Pattern p2 = Pattern.compile("\\d{6}(\\d{8}).*"); //
Pattern p3 = Pattern.compile("(\\d{4})(\\d{2})(\\d{2})");//
for (int i = 0; i < strs.length; i++) {
Matcher matcher = p2.matcher(strs[i]);
boolean b = matcher.find();
if (b) {
String s = matcher.group(1);
Matcher matcher2 = p3.matcher(s);
if (matcher2.find()) {
System.out
.println(" " + matcher2.group(1) + " "
+ matcher2.group(2) + " "
+ matcher2.group(3) + " ");
}
}
}
}
}