ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [정규식] 정규식을 이용한 전화번호 추출하기
    JAVA 2015. 12. 23. 11:03

    개인정보 입력에서 거의 빠지지 않는 항목인 전화번호를 추출하는 방법을 알아보자.

    요즘은 보통 집전화번호 같은 경우는 필수로 받질 않기 때문에

    사람들이 임의로 아무거나 입력하는 경우가 많다.

    그러나 우리는 입력된 그 번호를 가지고 데이터를 핸들링 해야한다.

    이번엔 하이픈(-) 을 넣어서 구분자 입력 처리를 해볼것이다.

    소스부터 보시라..

    public void telTest() { 
        String sample = ""; 
    
        System.out.println(this.getTelNumber(sample)); // "--" 반환 
    
        String sample1 = "02.222.3333"; 
        System.out.println(this.getTelNumber(sample1)); // "02-222-3333" 반환 
    
        String sample2 = "02.2222.3333"; 
        System.out.println(this.getTelNumber(sample2)); // "02-2222-3333" 반환 
    
        String sample3 = "010.222.3333"; 
        System.out.println(this.getTelNumber(sample3)); // "010-222-3333" 반환 
    
        String sample4 = "010.2222.3333"; 
        System.out.println(this.getTelNumber(sample4)); // "010-2222-3333" 반환 
    
        String sample5 = "010.22222.33333"; 
        System.out.println(this.getTelNumber(sample5)); // "010-2222-233333" 반환 
    } 
    
    public String getTelNumber(String tel) { 
        // 숫자만 남기기 
        tel = tel.replaceAll("\[^0-9\]", ""); 
    
        // 9자리 이상이면 전화번호 
        if (tel.length() > 9) { 
            String regEx = "(\\d{3})(\\d{4})(\\d{4})";
    
            if (tel.length() == 9) {
                regEx = "(\\d{2})(\\d{3})(\\d{4})";
            } else if (tel.length() == 10) {
                // 10자리 일 경우 처리가 달라진다. ex) 02-2222-3333 , 011-222-3333
                String chkTel = tel.substring(0, 2);
    
                // 앞자리가 02로 시작되면 앞자리가 2자리
                if (chkTel.equals("02")) {
                    regEx = "(\\d{2})(\\d{4})(\\d{4})";
                } else {
                    regEx = "(\\d{3})(\\d{3})(\\d{4})";
                }
            }
            tel = tel.replaceAll(regEx, "$1-$2-$3"); 
        } else { 
            // 9자리 이하면 그냥 -- 만 추가해준다. 
            tel = tel + "--"; 
        } 
    }

    정규식을 조금만 알면 쉽게 해결할 수 있다. (물론 나는 조금도 몰라서 검색했다.)

    특별한 부분이 없어 소스만 보면 알 수 있을것이다.

    만약 하이픈(-)이 아닌 다른걸 사용하고 싶다면

    tel = tel.replaceAll(regEx, "$1-$2-$3");

    위 코드에서 "$1-$2-$3" 의 하이픈을 변경하고 싶은 다른 구분자로 사용하면 된다.

    댓글

Designed by Tistory.