如何用JavaScript结合XMLHTTPRequest/Fetch获取匹配模式的服务器文件名
用JavaScript筛选符合通配模式的文件名列表
完全可以实现,根据运行环境的不同,分为两种处理方式:
1. Node.js服务器端直接操作文件系统
如果是在Node.js环境下直接读取服务器上的文件目录,可以借助内置的fs模块先获取目录下的所有文件,再用正则表达式匹配符合FileName_WC.ext模式的文件名(其中WC代表日期字符串)。
代码示例(异步方式)
const fs = require('fs').promises; async function getMatchingFiles(dirPath) { try { const allFiles = await fs.readdir(dirPath); // 正则匹配:以FileName_开头、.ext结尾,中间为含数字/横杠的日期格式字符串 // 若日期格式有固定规则(如YYYYMMDD),可调整正则更精准 const pattern = /^FileName_[\d\-]+.ext$/; return allFiles.filter(file => pattern.test(file)); } catch (err) { console.error('读取目录失败:', err); return []; } } // 调用示例:传入目标目录路径 getMatchingFiles('./your-target-dir').then(matchingFiles => { console.log('符合条件的文件:', matchingFiles); });
代码示例(同步方式)
const fs = require('fs'); function getMatchingFilesSync(dirPath) { try { const allFiles = fs.readdirSync(dirPath); const pattern = /^FileName_[\d\-]+.ext$/; return allFiles.filter(file => pattern.test(file)); } catch (err) { console.error('读取目录失败:', err); return []; } } // 调用示例 const matchingFiles = getMatchingFilesSync('./your-target-dir'); console.log('符合条件的文件:', matchingFiles);
2. 前端已获取文件名列表的场景
如果是前端通过接口拿到了服务器返回的文件名数组,直接对数组进行筛选即可,无需操作文件系统:
// 假设从接口获取的文件名列表 const fileList = ['FileName_20240520.ext', 'FileName_1.ext', 'FileName_2024-05-21.ext', 'OtherFile.txt']; const pattern = /^FileName_[\d\-]+.ext$/; const matchingFiles = fileList.filter(file => pattern.test(file)); console.log('符合条件的文件:', matchingFiles);
正则说明
上面的正则是通用版,可匹配包含数字、横杠的常见日期格式。如果你的日期格式有固定规则(比如仅8位数字的YYYYMMDD),可以把正则改成/^FileName_\d{8}.ext$/,匹配会更精准。
内容的提问来源于stack exchange,提问作者Mal
相关产品推荐
相关产品推荐

