JX405기_비트/Java

Day05-4 정규표현식

_하루살이_ 2023. 1. 16. 16:23
package day0113;
// 정규표현식(Regular Expression)
// 어떤 String 패턴을 표현하는 방법

public class Ex03RegExp {
    public static void main(String[] args) {
        // 1. 숫자 체크
        System.out.println("1. 숫자 체크");
        String pattern = "\\d"; // 해당 String 이 한개의 숫자 하나로만 이뤄졌는지를 체크
        System.out.println("\"1\" : " + "1".matches(pattern)); // true
        System.out.println("\"a\" : " + "a".matches(pattern)); // false
        System.out.println("--------------------------------------------------\n");

        // 2. 글자 체크
        System.out.println("2. 글자 체크");
        pattern = "\\w"; // 해당 String 이 한개의 단어 하나로만 이뤄졌는지를 체크
        System.out.println("\"1\" : " + "1".matches(pattern)); // true
        System.out.println("\"a\" : " + "a".matches(pattern)); // true
        System.out.println("--------------------------------------------------\n");

        // 2-1. 알파벳 체크
        System.out.println("2-1. 알파벳 체크");
        pattern = "[A-Za-z]"; // [] 범위로 묶어줌
        System.out.println("\"1\" : " + "1".matches(pattern)); // false
        System.out.println("\"a\" : " + "a".matches(pattern)); // true
        System.out.println("--------------------------------------------------\n");

        // 3. 여러개의 숫자로만 이루어졌는지 체크
        System.out.println("3. 여러개의 숫자로만 이루어졌는지 체크");
        pattern = "\\d+"; // \\d+ 1개 이상의 숫자, \\d* 0개이상의 숫자
        System.out.println("\"1\" : " + "1".matches(pattern)); // true
        System.out.println("\"123\" : " + "123".matches(pattern)); // true
        System.out.println("--------------------------------------------------\n");

        // 4. 복합접으로 섞어서 사용해보기
        System.out.println("4. 복합접인 사용");
        pattern = "010-\\d{4}-\\d{4}"; // \\d{숫자 갯수}
        System.out.println("\"010-1234-1234\" : " + "010-1234-1234".matches(pattern)); // true
        System.out.println("\"010-9999-8888\" : " + "010-9999-8888".matches(pattern)); // true
        System.out.println("\"02-111-2222\" : " + "02-111-2222".matches(pattern)); // false
        System.out.println("\"서울시 강남구 강남동 강남로\" : " + "서울시 강남구 강남동 강남로".matches(pattern)); // false
        System.out.println("\"admin@gmail.com\" : " + "admin@gmail.com".matches(pattern) ); // false
        System.out.println("--------------------------------------------------\n");

        pattern = "\\d{3,6}"; // \\d{3,6} 3개에서 6개의 숫자
        System.out.println("\"1\" : " + "1".matches(pattern)); // false
        System.out.println("\"135\" : " + "135".matches(pattern)); // true
        System.out.println("\"13579\" : " + "13579".matches(pattern)); // true
        System.out.println("\"123456\" : " + "123456".matches(pattern)); // true
        System.out.println("\"1234567\" : " + "1234567".matches(pattern)); // false
        System.out.println("--------------------------------------------------\n");


    }
}

 

정규식을 활용해서 ScannerUtil 수정하기

nexInt()에서 문자를 입력하면 오류 발생 아래와 같이 정규식을 이용해서 변경

public static int nextInt(Scanner scanner, String message){
    String strTemp = nextLine(scanner, message);
    while (!strTemp.matches("\\d+")) {
        System.out.println("잘못 입력하셨습니다.");
        strTemp = nextLine(scanner,message);
    }

    int temp = Integer.parseInt(strTemp);

    return temp;
}