Валидация в JavaScript: Как создать массив invalidChars, содержащий все запрещенные символы для имен папок/файлов в Windows/Linux?
При разработке файловых менеджеров, загрузчиков файлов или любых форм, где пользователь вводит имя файла или папки, крайне важно валидировать входные данные. Разные операционные системы имеют разные ограничения на допустимые символы в именах файлов и директорий.
## Запрещённые символы в Windows
Windows запрещает использование следующих символов в именах файлов и папок:
— « — обратный слэш (разделитель пути)
— `/` — прямой слэш (тоже разделитель)
— `:` — двоеточие (используется для обозначения диска, например `C:`)
— `*` — звёздочка (маска поиска)
— `?` — знак вопроса (маска поиска)
— `»` — двойная кавычка
— « — знак больше
— `|` — вертикальная черта (пайп)
— Управляющие символы (коды 0–31)
## Запрещённые символы в Linux/Unix
Linux значительно либеральнее, но всё же запрещает:
— `/` — прямой слэш (разделитель пути)
— Нулевой байт ` `
Однако на практике рекомендуется также избегать символов, которые имеют специальное значение в оболочке: `*`, `?`, `[`, `]`, `{`, `}`, `!`, `$`, `&`, `’`, `»`, `;`, `(`, `)`, пробел и другие.
## Создание универсального массива invalidChars в JavaScript
javascript
// Запрещённые символы для Windows
const windowsInvalidChars = [‘\’, ‘/’, ‘:’, ‘*’, ‘?’, ‘»‘, », ‘|’];
// Запрещённые символы для Linux (минимум)
const linuxInvalidChars = [‘/’];
// Универсальный массив для обеих систем (рекомендуется)
const invalidChars = [‘\’, ‘/’, ‘:’, ‘*’, ‘?’, ‘»‘, », ‘|’, ‘
