Замените префикс URI из Base64String с помощью Regex

Я работаю с загрузкой JSZip, и есть некоторые данные URI фото, которые должны быть загружены FileSaver.

URI фото выглядит так:

photouri1 = 'data:image/jpeg;base64,/9a...';
photouri2 = 'data:image/png;base64,/9a...';

Как видите, существует 2 типа URI фотографий. Поскольку zip.file API требует, чтобы данные были base64String, я должен заменить префикс URI пустой строкой следующим образом:

...
var base64Str1 = photouri1.replace('data:image/jpeg;base64,', '');
zip.file('image1', base64Str1, { base64: true });
var base64Str1 = photouri1.replace('data:image/png;base64,', '');
zip.file('image2', base64Str2, { base64: true });
zip.generateAsync({ type: 'blob' }).then(...)

Я хочу, чтобы операция замены могла выполняться одновременно (пакетная операция) с использованием простого регулярного выражения с циклом for~.

Какие-либо предложения? Заранее спасибо.


person egor518    schedule 11.12.2018    source источник
comment
вы можете использовать это .*(?=\/)   -  person Code Maniac    schedule 11.12.2018
comment
@CodeManiac не могли бы вы предоставить подробное заявление?   -  person egor518    schedule 11.12.2018
comment
да, конечно, добавил это как ответ с подробным объяснением   -  person Code Maniac    schedule 11.12.2018


Ответы (1)


Вы можете попробовать это

^.*base64,(?=\/)

Объяснение

  • ^ — привязка к началу строки.
  • .* — будет соответствовать чему угодно, кроме символа новой строки, ноль или более раз. (Жадный режим).
  • base64,- Will matchbase64,`.
  • (?=\/) - Положительный прогноз будет соответствовать /

Демо

person Code Maniac    schedule 11.12.2018
comment
большое спасибо. я сделал это так. str = photouri.replace(/^.*base64,(?=\/)/, ''); - person egor518; 11.12.2018
comment
@RobJS всегда рад помочь :) - person Code Maniac; 11.12.2018