자바나 안드로이드 자바에서 개발시에 입력값들을 검사해야 하는 경우가 있다.
이러한 경우의 아래 클래스를 이용하여 쉽게 처리할 수 있습니다 ^^
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
'IT이야기 > JAVA' 카테고리의 다른 글
JAVA의 기본 (0) | 2017.07.25 |
---|---|
[자바의 정석] Chapter8. 예외처리 (0) | 2016.05.06 |
[DURGA 코딩 인터뷰] public static void main() 자바 1.7부터의 특징 (0) | 2016.04.24 |
[DURGA 코딩인터뷰] public static void main() 상속/오버로딩/숨김/오버라이딩? (0) | 2016.04.24 |
[자바의 정석] Chapter1. 자바 기본지식 (0) | 2016.04.24 |