chrome.downloads API:使用正则表达式替换文件名中的无效字符

问题描述 投票:0回答:1

我正在尝试使用

chrome.downloads.download(...)
下载文件。文件名是外部给定的,所以我不知道里面的字符。如果它包含无效字符,函数
download
将抛出错误
Error: Invalid filename

  • JavaScript 中是否有一个正则表达式可以将文件名中的 all 无效的起始/中间/结尾 Unicode 字符替换为

    _

  • 或者有没有列出 Chrome 中文件名规则的文档?

  • 有没有办法让 Chrome 替换我的文件名中的无效字符,而不是抛出错误?

Chrome 不允许使用比常见文件系统(例如 NTFS)更多的字符,并且我不确定 Chrome 对“无效字符”的确切定义。我当前的正则表达式尝试是

var regex = /^\.|\.$|[\x00-\x1f\\\/:*?"<>|\r\n\u200D]/g;
filename.replaceAll(regex, '_');

但它只涵盖了一些无效的 Unicode 字符。

我避免使用

<a>
方法下载(即使用
<a>
href
属性创建
download
,然后单击它),因为我想在下载文件夹中创建子目录。

javascript regex google-chrome-extension
1个回答
0
投票

我不确定 Chrome 中文件名的规则,我找到了这个开发人员文档样式指南,但一个简单的解决方案是仅接受字母数字字符、减号和句点,以及正则表达式:

var regex = /[^\w-.]/g;

如果有很多无效字符,也许删除它们比用下划线替换它们更方便:

filename.replaceAll(regex, '');
© www.soinside.com 2019 - 2024. All rights reserved.