정규식으로 파일 유형 유효성 검사
정규식 유효성 검사기에 연결된 파일 업로드 컨트롤이있는 .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
'Development Tip' 카테고리의 다른 글
ES6 기능이 활성화 된 상태에서 Node.js 앱을 실행하는 방법은 무엇입니까? (0) | 2020.11.09 |
---|---|
Angular2 IE11 정의되지 않은 참조 또는 null 참조의 'apply'속성을 가져올 수 없습니다. (0) | 2020.11.09 |
이름-값 쌍의 의미 및 구조 (0) | 2020.11.08 |
Android 마켓에서 앱을 설치 한 후 리퍼러 받기 (0) | 2020.11.08 |
웹 크롤러 디자인 (0) | 2020.11.08 |