-
[정규식] 정규식을 이용한 전화번호 추출하기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" 의 하이픈을 변경하고 싶은 다른 구분자로 사용하면 된다.
'JAVA' 카테고리의 다른 글
[JAVA] Java9 + Spring5 + Gradle 개발환경 만들기 (0) 2017.11.24 [Message] properties 파일로 메시징 처리하기 (0) 2016.02.02 [SPRING] 스프링 프레임워크에서 트랜잭션 처리 (0) 2015.12.08 REST API 호출 (0) 2015.12.02 경로 구하기 (0) 2015.11.30