Какое регулярное выражение (JavaScript) я должен использовать, чтобы убедиться, что строка является допустимым именем файла?

StackOverflow https://stackoverflow.com/questions/130837

  •  02-07-2019
  •  | 
  •  

Вопрос

На данный момент я все еще изучаю регулярные выражения, но на данный момент не мог бы кто-нибудь помочь мне с этим?У меня есть несколько особых требований к форматированию строки:

  1. Никаких каталогов.ПРОСТО имя файла.
  2. Имя файла должно быть полностью в нижнем регистре.
  3. Пробелы необходимо заменить символами подчеркивания.

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

Это было полезно?

Решение

И я бы порекомендовал простую комбинацию регулярного выражения и другого javascript:

var a = "c:\\some\\path\\to\\a\\file\\with Whitespace.TXT";
a = a.replace(/^.*[\\\/]([^\\\/]*)$/i,"$1");
a = a.replace(/\s/g,"_");
a = a.toLowerCase();
alert(a);

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

Если вы очень спешите, обычно вы можете найти приемлемые регулярные выражения в библиотеке по адресу http://regexlib.com/.Отредактируйте, чтобы сказать: Вот один из них, который может сработать для вас.

Если вы берете строковый путь от пользователя (например.прочитав .значение поля загрузки файла), вы на самом деле не можете быть уверены, что такое символ разделителя пути.Это может быть обратная косая черта (Windows), прямая косая черта (Linux, OS X, BSD и т.д.) Или что-то еще полностью на старых или малоизвестных операционных системах.Разделение пути по прямой или обратной косой черте будет охватывать общие случаи, но неплохо бы включить возможность для пользователя переопределить имя файла в случае, если мы ошиблись в выборе.

Что касается "недопустимых символов", то они тоже зависят от операционной системы.Вероятно, самый простой способ - заменить все не алфавитно-цифровые символы заполнителем, таким как символ подчеркивания.

Вот что я использую:

var parts= path.split('\\');
parts= parts[parts.length-1].split('/');
var filename= parts[parts.length-1].toLowerCase();
filename= filename.replace(new RegExp('[^a-z0-9]+', 'g'), '_');
if (filename=='') filename= '_'

Я бы посмотрел на Библиотека регулярных выражений.

Вы можете выбрать любое количество предварительно настроенных регулярных выражений различной степени надежности в соответствии с вашими потребностями.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top