У меня возникло множество проблем с фильтрацией имен файлов в Java. Я использую тэг PrimeFaces fileUpload, и мне нужно разрешить файлы, которые могут быть загружены, если они содержат только буквенно-цифровые символы, за которыми следует расширение, например «.txt». Чтобы быть конкретным, перед расширением имя должно содержать одно или несколько из AZ, az или 0-9, без пробелов или других символов, за которым следует расширение «.txt», то есть должно быть одно и только одно "" в имени, и это должно быть в начале расширения.Фильтрация имен файлов
До сих пор все попытки фильтрации имен не были разработаны должным образом, если я исключаю .
, то он также исключается из расширения. Имя файла должно быть типа: abcXYZ123.txt
, aaaccc001.txt
и т.д., но не ab.cd.txt
и т.д.
Я пробовал различные комбинации /[A-Za-z0-9]+\\.txt$/
, /[^\\W_]+\\.txt$/
, /[\\p{Alnum}]\\.txt$/
и т.д., но либо они позволяют некоторые недопустимые имена, или исключить somevalid имена.
Некоторая помощь была бы очень признательна.
Судя по примеру в [витрине] (http://www.primefaces.org/showcase/ui/fileUploadAuto.jsf), проблема может быть в ваших двойных обратных косых чертах. Вы пробовали '/^[A-Za-z0-9] + \. Txt $ /'? – Keppil