본문 바로가기

JAVA

JAVA - 정규식 + 하이픈(-) 전화번호

 - 코드 테러 주의

 

정규식을 활용하여 전화번호를 입력시 자릿수에 맞게 자동으로 ' - ' 처리 해주기.

 

조건 1) 지역번호가 두자리 수 인 전화번호에 맞게 처리(예: 02-***-****)

조건 2) 지역번호가 세자리 수 인 전화번호에 맞게 처리

조건 3) 조건 1, 2에서 중간번호가 3, 4자리인 수에 맞춰 - 처리

 

 

** 첫번째 시도,

아래와 같이 이렇게 하면 에러가 남.

pakage test; 
import java.util.regex.Pattern; 
public class TelTest { 
  public static String telNumber(String number) { 
  // 전화번호 정규표현식으로 제한 
  String regEx = "(\\d{2,3})(\\d{3,4})(\\d{4})";
    if(!Pattern.matches(regEx, number)){ 
    	return null; 
    } 
    
    // 070일때, 중간자리 3, 마지막자리 3자리 입력일 때 (ex. 070 123 123) 
    if(number.substring(0,3).contains("070") && number.length() == 9){ 
      // 받은 값을 확인하고 싶다면 
      System.out.println(number.toString());
      return null; 
    } 
    // 지역번호가 3자리수일 때, 중간자리 3, 마지막자리 3자리 입력일 때(ex. 031 123 123) 
    // 에러남 02-123-1234도 포함이 되기 때문에 
    // else if(number.substring(0,3).length() == 3 && number.length() == 9) {
      // 받은 값을 확인하고 싶다면 
      //System.out.println(number.toString()); 
      //return null; 
    //} 
   return number.replaceAll(regEx, "$1-$2-$3"); // 출력 xxx-xxxx-xxxx 
 } 
  
  public static void main(String[] args){ 
  
    System.out.println(telNumber("021231234")); //출력 02-123-1234 
    System.out.println(telNumber("0212341234")); //출력 02-1234-1234 
    System.out.println(telNumber("0701231234")); //출력 070-123-1234 
    System.out.println(telNumber("07012341234"));//출력 070-1234-1234 
    System.out.println(telNumber("070123123")); // 에러 070 123 123 출력 => null 
    
  } 
}


-  2차시도, 수정본

pakage test; 
import java.util.regex.Pattern; 
public class TelTest { 
  public static String telNumber(String number) {
    // 전화번호 정규표현식으로 제한 
    String regEx = "(\\d{2,3})(\\d{3,4})(\\d{4})"; 
      if(!Pattern.matches(regEx, number)){ 
      	return null; 
      } 
      
      // 070일때, 중간자리 3, 마지막자리 3자리 입력일 때 (ex. 070 123 123) ==> 이 부분도 삭제가능 
      if(number.substring(0,3).contains("070") && number.length() == 9){
        // 받은 값을 확인하고 싶다면 
        System.out.println(number.toString()); 
        return null; 
      } 
      // 지역번호가 02이면서 9자리 수일 때 == not error 
       else if(number.substring(0,2).contains("02") && number.length() == 9){ 
        return number.replaceAll(regEx, "$1-$2-$3"); // 출력 xxx-xxx-xxxx 
       } 
      // 지역번호 02를 제외한 지역번호일 때
      else if(number.length() == 9) {
        System.out.println(number.toString()); 
        return null;
      } 
  	return number.replaceAll(regEx, "$1-$2-$3"); // 출력 xxx-xxxx-xxxx 
  } 
  
  public static void main(String[] args){ 
  
    System.out.println(telNumber("021231234")); //출력 02-123-1234 
    System.out.println(telNumber("0212341234")); //출력 02-1234-1234 
    System.out.println(telNumber("0701231234")); //출력 070-123-1234
    System.out.println(telNumber("07012341234"));//출력 070-1234-1234 
    System.out.println(telNumber("070123123")); // 에러 070 123 123 출력 => null 
    
  } 
}



** 3차시도 !  진짜 최종

pakage test; 
import java.util.regex.Pattern; 
public class TelTest {
  public static String telNumber(String number) {
    // 전화번호 정규표현식으로 제한 
    String regEx = "(\\d{2,3})(\\d{3,4})(\\d{4})"; 

      if(!Pattern.matches(regEx, number)){ 
        System.out.println("에러 1 : 형식 오류 ====> "+number.toString());
        return null; 
      } 

      // 지역번호가 02이면서 9자리 수일 때 == not error 
      if(number.substring(0,2).contains("02") && number.length() == 9){ 
        return number.replaceAll(regEx, "$1-$2-$3"); // 출력 xxx-xxx-xxxx 
      } 

      // 지역번호 02를 제외한 번호 (070,031,064 ...) 가 9자리 일 때 == > 에러 
      else if(number.length() == 9){
        System.out.println("에러 2 : 자릿수 입력 오류 ====> "+number.toString()); 
        return null;
      }
    return number.replaceAll(regEx, "$1-$2-$3"); // 출력 xxx-xxxx-xxxx 
  } 
    
  public static void main(String[] args){ 
  
    System.out.println(telNumber("021231234")); //출력 02-123-1234 
    System.out.println(telNumber("0212341234")); //출력 02-1234-1234 
    System.out.println(telNumber("0701231234")); //출력 070-123-1234 
    System.out.println(telNumber("07012341234"));//출력 070-1234-1234 
    System.out.println(telNumber("070123123")); // 에러 070 123 123 출력 => null 
    
  }
}