자바나 안드로이드 자바에서 개발시에 입력값들을 검사해야 하는 경우가 있다.

 

이러한 경우 정규표현식을 사용하여 처리할 수 있다.

 

java.util.regex 패키지에 있는 Match클래스와 Pattern클래스를 사용하여 문자열을 구분할 수 있다.

주요 메소드는 

Pattern.match(정규표현식, 대상 문자열);

인데, 아래의 예를 확인해보자.

 


정규표현식 기본 문법

 

^ : 문자열의 시작을 나타냄

$ : 문자열의 종료를 나타냄

. : 임의의 한문자를 나타냄 

I : or를 나타냄

[] : 문자열 클래스 지정시 사용

\w : 알파벳이나 숫자

\W : 알파벳이나 숫자를 제외한 문자

\d : 숫자 [0-9]와 동일

 


기본 정규표현식

 

- 한글만 구분

(1) 정규식 :^[ㄱ-ㅎ가-힣]*$ 
(2) 메소드 : boolean a = Pattern.matches("^[ㄱ-ㅎ가-힣]*$", "비교문자");
(3) 예 : boolean a = Pattern.matches("^[ㄱ-ㅎ가-힣]*$", "가지"); 
     -> "가지"는 한글이므로 a에 true값 리턴됨

 

- 영문 (대소문자 구분)

(1) 정규식 : ^[a-zA-Z]*$
(2) 메소드 : boolean b = Pattern.matches("^[a-zA-Z]*$", "비교문자");
(3) 예 : boolean b = Pattern.matches("^[a-zA-Z]*$", "Felix");
     -> Felix는 영문이므로 b에 true값 리턴됨

 

 

- 영어소문자

(1) 정규식: ^[a-z]*$
(2) 메소드 : boolean c = Pattern.matches("^[a-z]*$", "비교문자");

 

 

- 숫자

(1) 정규식 : ^[0-9]*$ 
(2) 메소드 : boolean c = Pattern.matches("^[0-9]*$", "비교문자");

 

 

- 한글과 숫자

(1) 정규식 : ^[ㄱ-ㅎ가-힣0-9]*$
(2) 메소드 : boolean c = Pattern.matches("^[ㄱ-ㅎ가-힣0-9]*$", "비교문자");

 


응용 정규 표현식

 

- 이메일 : 아이디@도메인 형식

정규식 : [0-9a-zA-Z]+(.[_a-z0-9-]+)*@(?:\\w+\\.)+\\w+$

 

- 주민번호 : 첫글자가 1~4인지 검사, "-" 허용안함

정규식 : ^\\d{6}[1-4]\\d{6}

 

 

- 전화번호 : 연결부는 "-"로 구분되어있음

정규식 : ^\\d{2,3}\\d{3,4}\\d{4}$

 

- 핸드폰번호 : 010, 016~019 사이를 충족해야함, "-" 허용안함

정규식 : ^01(?:0|1|[6-9])(?:\\d{3}|\\d{4})\\d{4}$

 

 

- IP주소

정규식 ; ([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})

 

# 참고 : IP가 IPv4형식이라면 정규식 말고 아래의 메소드를 사용할 수도 있음

public static final boolean checkIPv4(final String ip) {
    boolean isIPv4;
    try {
    final InetAddress inet = InetAddress.getByName(ip);
    isIPv4 = inet.getHostAddress().equals(ip)
            && inet instanceof Inet4Address;
    } catch (final UnknownHostException e) {
    isIPv4 = false;
    }
    return isIPv4;
}

 

 

출처 :

https://docs.oracle.com/javase/7/docs/api/java/util/regex/package-summary.html

https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

+ Recent posts