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

Я загружаю файл, и мне нужно проверить, принадлежит ли имя файла определенному шаблону или нет.

Пример: AL-13-Ежегодный аудит DSH.pdf

Первые два символа «AL» могут быть любыми, но это будут только 2 символа в верхнем регистре, за которыми следует тире (-), за которым следует двухзначное число, за которым следует тире (-), за которым следуют остальные («Ежегодный аудит DSH .pdf').

Это то, что я сделал до сих пор.

[A-Z]{2}[\-][0-9]{2}[\-][A]{1}[nnual]{5}\s[DSH]{3}\s[A]{1}[udit]{4}\.[pdf]{3}

Пожалуйста посоветуй. Не уверен, как действовать дальше, чтобы упростить это.

Если вы хотите сопоставить тире после двух символов верхнего регистра, то это именно то, что вам нужно добавить: [A-Z]{2}-. Добавьте персонажей, которые вы упомянули в описании. Если вы знаете, как сопоставить два символа в верхнем регистре, я предполагаю, что вы знаете, как сопоставить две цифры. Так в чем же проблема?

Felix Kling 12.03.2019 20:14

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

skwidbreth 12.03.2019 20:15
/^[A-Z]{2}-\d{2}-/
ibrahim mahrir 12.03.2019 20:15

@FelixKling исправил регулярное выражение. В любом случае, чтобы упростить это?

xin 12.03.2019 20:19

Должны ли все имена файлов содержать подстроку "Annual DSH Audit.pdf"?

ibrahim mahrir 12.03.2019 20:20
[...] обозначают группы символов, т.е. «соответствуют любому из этих символов». Таким образом, [nnual] совпадает с [nual], а [nnual]{5} соответствует nnnnn или nnuul. Если вы буквально хотите сопоставить определенную последовательность символов, вы просто записываете их как есть. Не используйте группу символов: Annual\sDSH\sAudit
Felix Kling 12.03.2019 20:24

Да, похоже, файлы, которые он загружает, должны иметь одну и ту же строку с одинаковыми регистрами.

a2441918 12.03.2019 20:25

все после последнего . ? Любая причина, по которой это не сработает?

Ronnie Royston 12.03.2019 20:26

Вы должны проверить этот веб-сайт для тестирования шаблонов регулярных выражений, это очень полезно: regexr.com/4a34v

FiniteLooper 12.03.2019 20:34
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
4
9
60
3

Ответы 3

const matchesFormat = str => /^[A-Z]{2}-\d{2}-.+\.pdf$/.test(str);

console.info( matchesFormat('AL-13-Annual DSH Audit.pdf') ); // true
console.info( matchesFormat('ZZ-00-test.pdf') );             // true
console.info( matchesFormat('AL-13-Annual DSH Audit.jpg') ); // false
console.info( matchesFormat('AL-13Annual DSH Audit.pdf') );  // false
console.info( matchesFormat('K-13-Annual DSH Audit.pdf') );  // false
console.info( matchesFormat('AL-2-Annual DSH Audit.pdf') );  // false

и если вам нужно также сопоставить отдыхAnnual DSH Audit.pdf, чем:

https://regex101.com/r/NNtx6o/1

const isAuditPDF = str => /^[A-Z]{2}-\d{2}-Annual\sDSH\sAudit\.pdf$/.test(str);

console.info( isAuditPDF('AL-13-Annual DSH Audit.pdf') ); // true
console.info( isAuditPDF('ZZ-00-test.pdf') );             // false
console.info( isAuditPDF('AL-1-Annual DSH Audit.pdf') );  // false

Пытаться

^[A-Z]{2}-\d\d-

let t= /^[A-Z]{2}-\d\d-/.test('AL-13-Annual DSH Audit.pdf'); 
console.info(t);

^[A-Z]{2}-\d{2}-Annual\sDSH\sAudit\.pdf$

* Отредактировано в соответствии с вашими требованиями

Ссылка на демо - https://regexr.com/4a344

Другие вопросы по теме