Study/java

[Java] 파일명 정규식 체크 방법 및 특수문자 포함 여부 확인 방법

 

파일명 정규식 체크 방법

보통 파일명은 xxx.jpg 혹은 xxx.txt 등 파일명과 파일 확장자가 반점을 기준으로 구분되어있는 형태입니다.

파일명을 체크하는 정규식은 다음과 같습니다.

^[^.]+\\.[a-zA-Z0-9]+$

 

  • ^[^.]+: 파일명의 시작을 의미하며, 처음에 .이 나오지 않도록 설정합니다. 따라서 .로 시작하는 숨김 파일 등은 걸러집니다.
  • \\.: 파일명과 확장자 사이에 정확히 하나의 .이 있어야 함을 나타냅니다.
  • [a-zA-Z0-9]+$: 확장자 부분으로, 영문자와 숫자 조합으로 구성된 문자열이어야 하며, 파일명 끝에서 끝나야 함을 의미합니다.

 

예제

위 정규식으로 파일명 여부를 체크하는 예제입니다.

String fileName1 = "image.jpg";
String fileName2 = "image.png";
String fileName3 = "video.mp4";
String fileName4 = "text.txt";
String fileName5 = "file";

String checkFileNameRegex = "^[^.]+\\.[a-zA-Z0-9]+$";

System.out.println(fileName1 + " : " + fileName1.matches(checkFileNameRegex));
System.out.println(fileName2 + " : " + fileName2.matches(checkFileNameRegex));
System.out.println(fileName3 + " : " + fileName3.matches(checkFileNameRegex));
System.out.println(fileName4 + " : " + fileName4.matches(checkFileNameRegex));
System.out.println(fileName5 + " : " + fileName5.matches(checkFileNameRegex));

정규식 파일명 여부 체크 결과
정규식 파일명 여부 체크 결과

확장자가 없는 형태의 문자열은 정규식을 통과하지 못합니다.

 

 

 

 

 

 

 

 

첨부 파일에 특수문자 포함 여부 체크 방법

첨부 파일명에 특수문자가 있는지 여부를 체크하는 정규식입니다.

^[a-zA-Z0-9]+\\.[a-zA-Z0-9]+$

 

  • ^[a-zA-Z0-9]+: 파일명의 시작이며, 영문자와 숫자만 허용합니다. 특수문자가 포함되지 않도록 설정되어있습니다.
  • \\.: 파일명과 확장자 사이에 정확히 하나의 .이 있어야 합니다.
  • [a-zA-Z0-9]+$: 확장자 부분으로, 영문자와 숫자 조합으로 구성된 문자열이어야 하며, 파일명 끝에서 끝나야 합니다.

예제

파일명에 특수문자가 있으면 false를 반환하는 예제입니다.

String fileName1 = "image$.jpg";
String fileName2 = "im!age.png";
String fileName3 = "video.mp4";
String fileName4 = "text.txt";
String fileName5 = "file.exe";

String notIncludeSpecialLetter = "^[a-zA-Z0-9]+\\.[a-zA-Z0-9]+$";

System.out.println(fileName1 + " : " + fileName1.matches(notIncludeSpecialLetter));
System.out.println(fileName2 + " : " + fileName2.matches(notIncludeSpecialLetter));
System.out.println(fileName3 + " : " + fileName3.matches(notIncludeSpecialLetter));
System.out.println(fileName4 + " : " + fileName4.matches(notIncludeSpecialLetter));
System.out.println(fileName5 + " : " + fileName5.matches(notIncludeSpecialLetter));

 

파일명 특수문자 포함 여부 체크
파일명 특수문자 포함 여부 체크

파일명에 특수문자가 포함되어있을 때 false를 반환합니다.

 

특정 파일 확장자만 허용하는 정규식

txt, jpg, png 등 특정 파일 확장자만 허용하는 정규식입니다.

# txt, jpg, png만 허용
^[a-zA-Z0-9-_]+\\.(txt|jpg|png)$

 

  • ^[a-zA-Z0-9-_]+: 파일명의 시작을 나타내며, 영문 대소문자, 숫자, 하이픈(-), 언더스코어(_)로 이루어진 하나 이상의 문자여야 합니다.
  • \\.: 파일명과 확장자 사이에 반드시 하나의 .이 있어야 합니다.
  • (txt|jpg|png)$: 확장자로 .txt, .jpg, .png 중 하나만 허용하며, 문자열의 끝에서 종료됩니다.

 

 

예제

String fileName1 = "image.jpg";
String fileName2 = "image.png";
String fileName3 = "video.mp4";
String fileName4 = "text.txt";
String fileName5 = "image.gif";

String onlyJpgPngTxtRegex = "^[a-zA-Z0-9-_]+\\.(txt|jpg|png)$";
System.out.println(fileName1 + " : " + fileName1.matches(onlyJpgPngTxtRegex));
System.out.println(fileName2 + " : " + fileName2.matches(onlyJpgPngTxtRegex));
System.out.println(fileName3 + " : " + fileName3.matches(onlyJpgPngTxtRegex));
System.out.println(fileName4 + " : " + fileName4.matches(onlyJpgPngTxtRegex));
System.out.println(fileName5 + " : " + fileName5.matches(onlyJpgPngTxtRegex));

특정 확장자만 허용하는 정규식
특정 확장자만 허용하는 정규식

위 코드에서는 \\.(txt|jpg|png)$ 부분이 추가되어 특정 확장자만 허용하도록 설정했습니다.

파일명이 형식을 만족할 때만 유효한 파일명으로 인식됩니다.