Найти имя файла в списке с расширением - PullRequest
0 голосов
/ 16 марта 2020

Мне нужно найти следующий шаблон имени файла, если он существует, вернуть true в nodejs Мне нужно, чтобы шаблон вернул true в случае, если следующее имя

Makefile
makefile
makefile.ext
makefile.abc

после точки, это может быть любое имя ... что важно, чтобы он начинался с makefile

Я пробовал следующее, но это дает только ext, а не имя файла orig

var patt1 = /\.([0-9a-z]+)(?:[\?#]|$)/i;

var m1 = ("makefile").match(patt1);
alert(m1);  

Есть идеи?

Ответы [ 4 ]

2 голосов
/ 16 марта 2020

Простое регулярное выражение для проверки, начинается ли строка с указанного префикса «makefile».

Поиск совпадений строки, которая начинается и заканчивается точно с «makefile» ИЛИ начинается с «makefile» «. и игнорирует все после периода. i после шаблона - это флаг, который указывает, что это поиск без учета регистра , что означает совпадение прописных и строчных букв и любое сочетание символов.

/(^makefile$|^makefile\.)/i.test(filename);

const isMakefile = filename => /(^makefile$|^makefile\.)/i.test(filename);

const filenames = [
  "Makefile",     // true
  "makefile",     // true
  "makefile.ext", // true
  "makefile.abc", // true
  "nakeFile.abc", // false
  "makefil",      // false
  "makefiles",    // false
  "makefiles.abc" // false
];

filenames.forEach(filename => console.log(filename, isMakefile(filename)));

Edit spring-sea-u4fmq

1 голос
/ 16 марта 2020

Это будет работать. Поместите имя файла в константу fileName

const fileName = "The file name to test";
return fileName.startsWith("Makefile.");
1 голос
/ 16 марта 2020

Так как вам не нужно никакого содержимого после точки, просто разбейте имя файла на массив, используя точку в качестве разделителя.

Первым элементом полученного массива всегда будет строка до точка (или вся строка, если в имени файла не было точки).

Затем можно преобразовать строку в нижний регистр и выполнить сравнение:

function isMakeFile(filename) {
    return filename && filename.split('.')[0].toLowerCase() === 'makefile';
}

console.log(isMakeFile('Makefile')); // true
console.log(isMakeFile('makefile')); // true
console.log(isMakeFile('makefile.ext')); // true
console.log(isMakeFile('makefile.abc')); // true
1 голос
/ 16 марта 2020

Почему бы вам просто не использовать это?

var n = str.toLowerCase().startsWith("makefile")
if(n===true){
//write your code
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...