/** * 过滤文件名中的特殊字符(包括 windows 预设文件名) * @param name 文件名 * @param replaceValue 把特殊字符替换成的字符, 默认为 _ * @param strict 是否启用严格模式,严格模式下还会过滤 { } = % & , 等字符 */ export function filenameFilter(name: string, replaceValue: string = "_", strict?: boolean): string { let fileName = name.replace(/[<>:"/\\|?*\u0000-\u001F]/g, replaceValue) if (strict) { fileName = fileName.replace(/[\{\} \=\%\&\,]/g, replaceValue) } // windows 预设文件名 if (/^(con|prn|aux|nul|com\d|lpt\d)$/i.test(fileName)) { fileName = `${fileName}_` // 加个下划线避免系统保留字冲突 } return fileName }