안녕하세요. 제임스 입니다.
이번 포스팅에서는 정규표현식으로 지정된 파일 확장자만 허용 하는 방법에 대해 정리 하겠습니다.
■ 정규표현식 파일 확장자 허용
1 | String regExp = "^([\\S]+(\\.(?i)(jpg|png|gif|bmp))$)"; | cs |
위 표현식을 정리 하면 아래와 같습니다.
^ |
( |
[\\S] |
+ |
( |
\\. |
(?i) |
(jpg|png|gif|bmp) |
) |
$ |
) |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
1: 정규표현식 시작
2: 첫번째 영역 지정 소괄호 오픈
3: 공백문자가 아닌 문자열
4: 앞의 표현식 (3번) 이 1회 이상 일치 (공백문자가 아닌 문자열이 꼭 와야 함)
5: 두번째 영역 지정 소괄호 오픈
6: 마침표( . )가 앞의 표현식 뒤에 따라옴
7: 대소문자 구분 없음
8: jpg, png, gif, bmp 등의 문자열 조합 허용
9: 두번째 영역 지정 소괄호 종료
10: 정규표현식 종료
11: 첫번째 영역 지정 소괄호 종료
1 2 3 4 5 6 7 8 9 | String regExp = "^([\\S]+(\\.(?i)(jpg|png|gif|bmp))$)"; String input1 = "abc.jpg"; String input2 = "def jpg"; String input3 = "def.txt"; System.out.println("input1 정규표현식 적용 결과 ==> "+input1.matches(regExp)); System.out.println("input2 정규표현식 적용 결과 ==> "+input2.matches(regExp)); System.out.println("input3 정규표현식 적용 결과 ==> "+input3.matches(regExp)); | cs |
위와 같이 세가지 문자열을 정규표현식으로 검사 해보겠습니다.
input1 은 abc.jpg 로 셋팅 했습니다.
많이 보던 파일명 형식이죠?
input2 는 중간에 . 이 빠진 형태 입니다. ( . ) 을 제대로 인식 하는지 여부 확인 용입니다.
input3 은 파일 확장자 명이 txt 입니다. 정규표현식에 없는 확장자 명을 지정 했습니다.
Results
input1 정규표현식 적용 결과 ==> true
input2 정규표현식 적용 결과 ==> false
input3 정규표현식 적용 결과 ==> false
input1 을 제외한 나머지는 정규표현식에 맞지 않는 형식이기에 false 가 리턴 되었습니다.
파일 확장자 정규표현식은 블로그나 카페에 여기저기 많이 있긴 한데요.
실제 테스트 해보시면 특정 케이스가 제대로 걸러지지 않는 경우가 많아 수정에 수정을 했습니다.
잘 사용하시길 바라겠습니다.
▼ 도움이 되셨다면 로그인이 필요 없는 ▼
▼ 하트 클릭 한번 부탁 드립니다 ▼
감사합니다 :D
'Java' 카테고리의 다른 글
[ 자바 코딩 ] Java Regular Expression 정규표현식 - 한글만 허용 (12) | 2018.06.20 |
---|---|
[ 자바 코딩 ] Java Regular Expression 정규표현식 - 이중 파일 확장자 처리 (12) | 2018.06.19 |
[ 자바 코딩 ] Regular Expression 정규표현식 - 영문자만 허용하기 (15) | 2018.06.12 |
[ 자바 코딩 ] Regular Expression 정규표현식 - 숫자만 허용하기 (15) | 2018.05.30 |
[ 자바 코딩 ] Regular Expression 정규표현식 기본 (11) | 2018.05.25 |