Если вы знаете, что все имена файлов начинаются с букв, цифр или подчеркиваний ascii, вы можете расширить свое регулярное выражение, указав, что следующий символ после ./
или ./../
должен быть одним из ведущих символов имени файла:
if (!/^(\.\/|\.\/\.\.\/)\w/.test(path)) {
Здесь \w
означает [A-Za-z0-9_]
.
Если вы хотите принять имена файлов, начинающиеся с точки или не-ASCII букв, у вас будет больше работы.
Регулярные выражения JavaScript изначально не обрабатывают не-ASCII-буквы, но для этого можно использовать сторонний механизм регулярных выражений.
Другой подход - сказать
if (!/^(\.\/|\.\/\.\.\/)[^.]/.test(path)) {
* 1016.* это означает, что вы не хотите, чтобы первый символ после
./
или
./../
был другой точкой.Это будет обрабатывать имена файлов с буквами не-ASCII, но не будет выбирать скрытые файлы, которые начинаются с точки.
Надеюсь, что приблизит вас!