(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를 컴마(,) 등으로 구분할 필요없이 연이어 써도 상관없다
- 정규 표현식 작성시 띄어쓰기와 컴마(,)를 입력하여 표현식에 포함시키지 않는다