#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
wherefile
is acsv
или что-то в этом роде.
Ответ №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));