首页 > 解决方案 > 使用正则表达式从 Base64String 替换 URI 前缀

问题描述

我正在使用JSZip下载,并且有一些照片 URI 数据应该由FileSaver下载。

照片 URI 如下所示:

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

如您所见,有两种类型的照片 URI。由于zip.fileapi 要求数据为 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~loop的简单正则表达式一次完成替换操作(批处理操作)。

有什么建议么?提前致谢。

标签: javascriptregexjszip

解决方案


你可以试试这个

^.*base64,(?=\/)

解释

  • ^- 锚定到字符串的开头。
  • .*- 将匹配除换行符零次或多次以外的任何内容。(贪婪模式)。
  • 基64,- Will match基64,`。
  • (?=\/)- 积极的前瞻将匹配/

演示


推荐阅读