source

정규식으로 파일 형식 검증

nicesource 2023. 4. 24. 23:30
반응형

정규식으로 파일 형식 검증

가 있습니다.정규 표현식 검증기에 연결된 파일 업로드 제어가 있는 NET 웹 양식.이 검증자는 특정 파일 형식(jpg,gif,doc,pdf)만 업로드할 수 있는지 확인해야 합니다.

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


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

하지만 이건 효과가 없는 것 같아...누가 레지스 좀 도와줄래?

내 생각에 당신의 정규식은 너무 복잡한 것 같아요.또한 점은 "모든 문자"를 의미하는 특수 문자임을 기억하십시오.다음 regex가 동작합니다(탈락된 도트에 주의해 주세요).

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

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

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

파일명이 적어도1글자인 .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/ 에서 테스트할 수 있습니다.

파일이 지정된 확장자인지 확인하려는 것 뿐입니까?다음과 같은 방법으로 수행하려는 작업을 단순화할 수 있습니다.

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

다음으로 IsMatch()를 호출할 때 RegexOptions를 전달해야 합니다.IgnoreCase를 두 번째 파라미터로 지정합니다.케이싱에 대한 변형을 나열할 필요가 없습니다.

편집: Dario에서 설명한 바와 같이 Regular Expression Validator는 케이스 옵션을 지원하지 않기 때문에 작동하지 않습니다.

다음과 같이 대소문자를 구분하지 않는 정규 표현을 포함할 수 있습니다.

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

regexp가 파일 이름과 확장자를 모두 검증하는 것 같습니다.그게 당신이 필요한 건가요?확장자일 뿐이고 다음과 같은 regexp를 사용합니다.

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

대소문자를 구분하지 않도록 매칭을 설정합니다.

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

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

ex: 추가할 수 있습니다([rR][aA][rR]Rar 파일 형식 등의 경우...

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

반응형