Development Tip

정규식으로 파일 유형 유효성 검사

yourdevel 2020. 11. 9. 21:14
반응형

정규식으로 파일 유형 유효성 검사


정규식 유효성 검사기에 연결된 파일 업로드 컨트롤이있는 .NET 웹 양식이 있습니다. 이 검사기는 특정 파일 형식 만 업로드 (jpg, gif, doc, pdf) 할 수 있는지 확인해야합니다.

이를 수행하는 현재 정규식은 다음과 같습니다.


^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w].*))(.jpg|.JPG|.gif|.GIF|.doc|.DOC|.pdf|.PDF)$

그러나 이것은 작동하지 않는 것 같습니다 ... 누구나 나에게 약간의 정규식 도움을 줄 수 있습니까?


귀하의 정규식은 내 의견으로는 너무 복잡해 보입니다. 또한 점은 "모든 문자"를 의미하는 특수 문자라는 점을 기억하십시오. 다음 정규식이 작동합니다 (이스케이프 된 점에주의).

^.*\.(jpg|JPG|gif|GIF|doc|DOC|pdf|PDF)$

Expresso 와 같은 도구를 사용 하여 정규식을 테스트 할 수 있습니다 .


파일이 주어진 확장자인지 확인하려고하십니까? 다음과 같이하려는 작업을 단순화 할 수 있습니다.

(.*?)\.(jpg|gif|doc|pdf)$

그런 다음 IsMatch ()를 호출 할 때 RegexOptions.IgnoreCase를 두 번째 매개 변수로 전달해야합니다. 대소 문자 변형을 나열 할 이유가 없습니다.

편집 : Dario가 언급했듯이 이것은 대 / 소문자 옵션을 지원하지 않기 때문에 RegularExpressionValidator에서 작동하지 않습니다.


^.+\.(?:(?:[dD][oO][cC][xX]?)|(?:[pP][dD][fF]))$

파일 이름이 하나 이상의 문자 인 .doc, .docx, .pdf 파일을 허용합니다.

^           = beginning of string
.+          = at least one character (any character)
\.          = dot ('.')
(?:pattern) = match the pattern without storing the match)
[dD]        = any character in the set ('d' or 'D')
[xX]?       = any character in the set or none 
              ('x' may be missing so 'doc' or 'docx' are both accepted)
|           = either the previous or the next pattern
$           = end of matched string

경고! 전체 확장 체인을 (? :)로 묶지 않으면 .docpdf와 같은 확장이 통과됩니다.

http://www.regextester.com/ 에서 정규식을 테스트 할 수 있습니다 .


다음과 같이 정규식에 대소 문자 구분을 포함 할 수 있습니다.

\.(?i:)(?:jpg|gif|doc|pdf)$

모든 파일 형식에이 템플릿을 사용할 수 있습니다.

ValidationExpression="^.+\.(([pP][dD][fF])|([jJ][pP][gG])|([pP][nN][gG])))$"

예 : [rR][aA][rR]Rar 파일 유형 등에 대해 ( )를 추가 할 수 있습니다 .


정규 표현식이 파일 이름과 확장자를 모두 확인하는 것 같습니다. 그게 필요한 건가요? 나는 그것이 단지 확장이라고 가정하고 다음과 같은 정규 표현식을 사용할 것입니다.

\.(jpg|gif|doc|pdf)$

그리고 대소 문자를 구분하지 않도록 일치를 설정하십시오.

참고 URL : https://stackoverflow.com/questions/374930/validating-file-types-by-regular-expression

반응형