안녕하세요. 제임스 입니다. 


이번 포스팅에서는 정규표현식으로 지정된 파일 확장자만 허용 하는 방법에 대해 정리 하겠습니다.  



■ 정규표현식 파일 확장자 허용


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


블로그 이미지

쉬운코딩이최고

Android, Java, jsp, Linux 등의 프로그래밍 언어를 소개 합니다.

,