본문 바로가기

국비교육/국비교육 복습

day14_regex_Test02 : 정규 표현식(Regular Expression) (1)

(Q) 사용자가 입력한 아이디가 다음 규칙에 맞는지 검사하도록 코드를 작성하시오

  • 아이디의 첫 글자는 알파벳 소문자로 시작해야 한다
  • 아이디의 두 번째 글자부터는 숫자 혹은 알파벳 소문자로 작성되어야 한다
  • 아이디는 총 8글자 이상 20글자 이하로 작성되어야 한다

- 문자열을 검사하기 위한 식(도우미 사이트 : regexper)

- 주요 명령

  • ^ : 문자열의 시작지점
  • $ : 문자열의 종료지점
  • [abc] : a, b, c중 하나(one of)
  • [a-c] : a부터 c 사이의 글자 중 하나(범위표시)
  • [a-c]{5} : a부터 c사이의 글자 중 하나가 5번 반복
  • [a-c]{3,5} : a부터 c사이의 글자 중 하나가 3에서 5번 반복

정규 표현식 시각화

- One of : 1회 실행을 의미한다

- 6...18 times : 6회에서 18회 사이의 횟수 반복을 의미한다

- 첫 번째 One of는 '첫 글자는 알파벳 소문자로 시작해야 한다'를 의미한다

- 두 번째 One of는 '두 번째 글자부터는 숫자 혹은 알파벳 소문자로 작성되어야 한다'를 의미한다

- 첫 번째와 두 번째 One of까지 총 2회를 제외하면 두 번째 과정을 6회에서 18회 사이의 횟수만큼 반복하면 된다

 

메인 메소드

package day14_regex;

import java.util.Scanner;
import java.util.regex.Pattern;

public class Test02 {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		// ID 생성 규칙의 정규 표현식
		String regex = "^[a-z][a-z0-9]{7,19}$";
		
		// 사용자 입력 ID
		String user = sc.next();
		
		// 판정
		boolean check = Pattern.matches(regex, user);
		
		// 출력
		if(check) {
			System.out.println("ID 생성 가능");
		}
		else {
			System.out.println("ID 생성 불가능");
		}
	}
}

 

 

- 정규 표현식은 ASCII 코드 번호로 범위를 자동으로 인식한다

  ex) ASCII의 16진법 표현에서 a-z의 범위는 61부터 7A까지이며 0-9는30부터 39까지이다

        따라서 a-z와 0-9를 컴마(,) 등으로 구분할 필요없이 연이어 써도 상관없다

 

- 정규 표현식 작성시 띄어쓰기와 컴마(,)를 입력하여 표현식에 포함시키지 않는다