신분증 판단: 15 명 이 든 18 명 이 든 마지막 한 명 은 알파벳 이 고 프로그램 을 써 서 그 중의 년 월 일 을 제시 할 수 있 습 니 다.

1922 단어 주민등록증
복잡 한 문자열 형식 을 정규 표현 식 으로 정의 할 수 있 습 니 다. (\ d {17} [0 - 9a - zA - Z] | \ d {14} [0 - 9a - zA - Z]) 합 법 적 인 15 자리 또는 18 자리 신분증 번 호 를 판단 할 수 있 습 니 다.
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) + " ");
					}
				}
			}
		}


}

좋은 웹페이지 즐겨찾기