IT이야기/JAVA

[JAVA Regex기본] 문자열 한글, 영문자, 숫자, 특수문자 구분하는 방법

FelixShin 2021. 10. 9. 02:17
반응형

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

이러한 경우의 아래 클래스를 이용하여 쉽게 처리할 수 있습니다 ^^

 

 

Package java.util.regex

정규표현식 패턴을 이용한 문자열을 매칭을 위한 클래스 (아래 참고)

 

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

주요 메소드는 

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

인데, 아래에서 예를 들도록 하겠습니다.

 

 

 

 

2. 정규표현식 기본 문법

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

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

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

I : or를 나타냄

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

\w : 알파벳이나 숫자

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

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

 

 

3. 기본 정규표현식

1) 한글만 구분

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

(3) 예 : boolean a = Pattern.matches("^[ㄱ-ㅎ가-힣]*$", "가지"); 

     -> "가지"는 한글이므로 a에 true값 리턴됨

 

2) 영문자(대소문자 구분함)

(1) 정규식 : ^[a-zA-Z]*$

(2) 메소드 : boolean b = Pattern.matches("^[a-zA-Z]*$", "비교문자");

(3) 예 : boolean b = Pattern.matches("^[a-zA-Z]*$", "Felix");

     -> Felix는 영문이므로 b에 true값 리턴됨

 

3) 영어소문자

(1) 정규식: ^[a-z]*$

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

 

4) 숫자

(1) 정규식 : ^[0-9]*$ 

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

 

5) 한글과 숫자

(1) 정규식 : ^[ㄱ-ㅎ가-힣0-9]*$

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

 

4. 응용 정규 표현식

1) 이메일 : 아이디@도메인 형식

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

 
 
 

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

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

 

 

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

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

 

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

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

 

 

5) IP주소

(1)정규식 ; ([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 (자세한 문법 참고)

http://stackoverflow.com/questions/4581877/validating-ipv4-string-in-java