Я пытаюсь ограничить загрузку пользователями Long named files
и unaccepted file extensions
с помощью средства проверки регулярных выражений в Asp.net 2.0 Webforms.Я хотел, чтобы символы filename to be withing 30
[ограничение из-за Db Design] и совпадения расширений png,jpeg,zip,rar,7z
. Я придумал это регулярное выражение, которое проверяет, что имя файла является допустимым символом, а затем приходит .
буквенный период, а затем расширение.
^[\w_]{3,28}\.(pdf|jpeg|png)$
Обновление: Я придумал это регулярное выражение, которое соответствует даже последнему экземпляру, что даже длинные имена файлов проверяются
(\\(?!.*\\)|)[\w_]{3,30}\.(pdf|jpeg|jpg|pdf)$
Обновление: Даже это работает только из-за того, что fileName не ограничен 30 символами
[\w]{3,30}\.(pdf|jpeg|jpg|pdf)(?=)
info: Он даже подтвердил c:\fakePath\stackoverflowstackoverflowstackoverflowstackoverflow
кстати, он выделил последние 30 символов в fileName.
Проблема заключалась в том, что я хочу, чтобы проверка выполнялась на клиенте во время загрузки, следовательно, EnableClientScript = True
, но, к моему удивлению, fileUpload.value, который проверяет элемент управления, был совершенно другим в большинстве браузеров.
Отчеты Firefox: filename.extension, как и ожидалось,
Internet Explorer сообщил полный путь к файлу
chrome сообщает C: \ fakePath \ fileName.extension
Теперь, как мне написать выражение для этого, моя идея состояла в том, чтобы найти последний экземпляр символа \
, если он присутствует в значении, и начать там форму.Но мои знания Regex полностью ограничены основами.может ли кто-нибудь исправить меня и предоставить рабочее регулярное выражение,
Примечание: Pls, прежде чем предоставить один, убедитесь, что оно отвечает моим требованиям, работает в кросс-браузерном режиме и проверяет на clientSide.