регулярное выражение для исключения имени файла - PullRequest
4 голосов
/ 10 июня 2019

Я пытаюсь загрузить файл с расширением, например .pdf или .xls. Я хочу исключить расширение .sh .exe, .js или .bat из имени файла, либо это конец имени, либо между именем файла, например,filename.exe.pdf Я хочу, чтобы он исключил

([a-zA-Z0-9\s_\\.\-:])(?!(exe|sh|js|bat))+(.pdf|.xls)$

, используя приведенный выше шаблон, если имя файла file.pdf, то это приемлемо, но я хочу, если имя файла filename.exe.pdf, то его следует исключитьexe имя файла

в настоящее время с этим шаблоном его соответствие до e.pdf для filename.exe.pdf

Ответы [ 3 ]

1 голос
/ 10 июня 2019

Вы можете использовать

/^(?!.*(?:\.(?:exe|sh|js|bat)(?:\.|$))).*\.(?:pdf|xls)$/i

См. Демонстрацию регулярных выражений и график регулярных выражений :

enter image description here

enter image description here

Подробности

  • ^ - начало строки
  • (?!.*(?:\.(?:exe|sh|js|bat)(?:\.|$))) - за этим не следует
    • .* - любые 0+ символов, кроме символов разрыва строки, максимально возможное количество
    • \. - точка
    • (?:exe|sh|js|bat) - любое из перечисленных расширений
    • (?:\.|$) - точка или конец строки
  • .* - любые 0+ символов, кроме символов разрыва строки, как можно больше
  • \. - точка
  • (?:pdf|xls) - pdf или xls
  • $ - конец строки
1 голос
/ 10 июня 2019

Попробуйте:

^(?:[a-zA-Z0-9\s_\\.\-:](?!\.(?:exe|js|bat|sh)\.))+?(?:\.pdf|\.xls)$

демо и график

enter image description here

0 голосов
/ 10 июня 2019

Вы можете сделать как:

 var file = files[0], type = file.type;
 if(type.match(/\.(pdf|xls)$/)){
   // only if .pdf or .xls
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...