Регулярное выражение для пути к папке без имени файла

#javascript #angular #regex

#javascript #угловой #регулярное выражение

Вопрос:

Я хочу проверить текстовое поле для ввода только как путь к папке, оно не должно принимать имя файла. Может кто-нибудь, пожалуйста, помочь мне с шаблоном регулярных выражений в javascript?

например.

folder1/folder2/folder3 => допустимо

folder1/folder2/filename.txt1 => недопустимо

Комментарии:

1. folder3 может быть файлом или каталогом на компьютерах Mac. Вы хотите блокировать только определенные расширения?

2. «пожалуйста, помогите мне» обычно означает, что у вас есть начало и вам нужна помощь с определенной частью. Если вы хотите, чтобы кто-то написал регулярное выражение для вас, это слишком много, чтобы просить добровольцев сделать это, не так ли?

3. извините, я перепробовал много шаблонов, но они также принимают имена файлов. Я хочу заблокировать все файлы с любым расширением, особенно .txt, .csv, .xlsx, .doc не должны принимать

4. Однако расширения для файлов не требуются. Вас это волнует? Что-то вроде ^[w/] $ будет работать, но не сработает для folder/file where file is a csv или что-то в этом роде.

Ответ №1:

Приведенное ниже регулярное выражение подтвердит, что строка имеет вид folder1/folder2/folder3

 const regExp = /^[w /] $/;

console.log(regExp.test('folder/folder/folder'));
console.log(regExp.test('folder/folder/text.txt'));  

Ответ №2:

Эта функция предполагает, что файлы всегда будут иметь расширения. Вместо регулярного выражения он использует базовое разделение и проверяет, есть ли у последнего элемента точка. Однако это не идеально, поскольку каталоги также могут иметь точку. Так что это может сработать, если вы обрабатываете структуру папок и т. Д. На стороне сервера.

 var path1 = "/f/d/a/1.txt";
var path2 = "/f/d/a";

function validatePath(str){
  temp = str.split("/");
  return (temp[temp.length-1].indexOf(".") > 0);
}

console.log(validatePath(path1));
console.log(validatePath(path2));  

Комментарии:

1. большое вам спасибо, все, я действительно ценю, что вы все ответили на мой маленький вопрос

Ответ №3:

Решение с регулярным выражением. Он не работает с такими путями, как ../ , ./ и домены.

     var path1 = "folder1/folder2/filename.txt";
    var path2 = "folder1/folder2/folder3";
    
    
    function validatePath(str){
      let re = new RegExp('^[^.] $')
      return re.test(str);
    }
    
    console.log(validatePath(path1));
    console.log(validatePath(path2));