Я использую Fancy Upload 3 и onSelect файла, мне нужно выполнить проверку, чтобы убедиться, что у пользователя нет плохих символов в имени файла. В настоящее время я заставляю людей загружать файлы с иероглифами и тому подобным в именах.
Мне нужно проверить, содержит ли имя файла только:
- A-Z
- A-Z
- 0-9
- _ (подчеркивание)
- - (минус)
- КОСМОС
- ÀùàèìòùÁÉÍÓÚÝáéíóúýÂÊÎÔÛâêîôûÃÑÕãñõÄËÏÖÜäëïöü (как одиночный и двойной байт)
Очевидно, вы можете увидеть трудную вещь там. Неанглийские одно- и двухбайтовые символы.
Я видел это:
[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]
А это:
[\x80-\xA5]
Но ни один из них не в полной мере освещает ситуацию правильно.
Примеры, которые должны работать:
- fást.zip
- abc.zip
- ABC.zip
- Über.zip
Примеры, которые НЕ должны работать:
- ΣΣøΔ.zip
- ¡вау! .Zip
- • §ªº¶.zip
Следующее близко, но я НЕТ RegEx'pert, даже не близко.
var filenameReg = /^[A-Za-z0-9-_]|[\x00A0-\xD7FF\xF900-\xFDCF\xFDF0-\xFFEF]+$/;
Заранее спасибо.
Решение от Zafer в основном работает, но оно не перехватывает все остальные символы, см. Ниже.
Uncaught:
¡£¢§¶ª«ø¨¥®´åß©¬æ÷µç
Пойманный:
™∞•–≠'"πˆ†∑œ∂ƒ˙∆˚…≥≤˜∫√≈Ω
Regex:
var filenameReg = /^([A-Za-z0-9\-_. ]|[\x00A0-\xD7FF\xF900-\xFDCF\xFDF0-\xFFEF])+$/;