파일명 정규식 체크 방법
보통 파일명은 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)$ 부분이 추가되어 특정 확장자만 허용하도록 설정했습니다.
파일명이 형식을 만족할 때만 유효한 파일명으로 인식됩니다.