You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Express/Node.js中如何编写指定格式文件名的JS分词方法

文件名分词实现方案

针对固定格式id-string1-string2-string3.extension的文件名解析,提供两种可直接在Express/Node.js环境运行的实现:

正则匹配方案

直接通过捕获组匹配三个目标字段,一步完成解析,同时自带格式校验能力,不符合规则的输入会直接抛出异常,适合API入参校验场景。

/**
 * 解析指定格式文件名字符串
 * @param {string} str 输入文件名
 * @returns {{a: string, b: string, c: string}} 解析结果
 */
function parseFileName(str) {
  // 正则捕获组说明:
  // 1. 第一组:匹配前三个短横线连接的分段,对应字段a
  // 2. 第二组:匹配最后一个短横线到扩展名之间的部分,对应字段b
  // 3. 第三组:匹配点后的文件扩展名,对应字段c
  const matchResult = str.match(/^([^-]+-[^-]+-[^-]+)-([^.]+)\.([^.]+)$/);
  if (!matchResult) {
    throw new Error('文件名格式不符合规范,需为 id-string1-string2-string3.extension 结构');
  }
  return {
    a: matchResult[1],
    b: matchResult[2],
    c: matchResult[3]
  };
}

测试示例输入:

  • 输入Il2dK-Ud2d9-Kod2d-d9dwo.jpg,输出{a: 'Il2dK-Ud2d9-Kod2d', b: 'd9dwo', c: 'jpg'}
  • 输入j54fwf3da-7jrg-9eujodww-kio98ujk.png,输出{a: 'j54fwf3da-7jrg-9eujodww', b: 'kio98ujk', c: 'png'}

非正则实现方案

如果不想维护正则规则,用原生字符串方法实现逻辑更直观,且兼容性更强——即使后续前三个分段内部出现额外短横线,也不需要调整逻辑就能正确取到最后一个短横线后的b字段。

/**
 * 解析指定格式文件名字符串
 * @param {string} str 输入文件名
 * @returns {{a: string, b: string, c: string}} 解析结果
 */
function parseFileName(str) {
  // 先拆分扩展名
  const lastDotIndex = str.lastIndexOf('.');
  if (lastDotIndex === -1) {
    throw new Error('文件名缺少合法扩展名');
  }
  const mainContent = str.slice(0, lastDotIndex);
  const extension = str.slice(lastDotIndex + 1);

  // 拆分短横线段,最后一段为b,剩余部分拼接为a
  const segments = mainContent.split('-');
  if (segments.length < 4) {
    throw new Error('文件名短横线分段数量不足');
  }
  const fieldB = segments.pop();
  const fieldA = segments.join('-');

  return {
    a: fieldA,
    b: fieldB,
    c: extension
  };
}

Express接口使用示例

可以直接将方法集成到API逻辑中,做好错误捕获即可:

const express = require('express');
const app = express();

app.get('/file/parse', (req, res) => {
  try {
    const { fileName } = req.query;
    const parseResult = parseFileName(fileName);
    res.json(parseResult);
  } catch (err) {
    res.status(400).json({
      code: 400,
      message: err.message
    });
  }
});

app.listen(3000);

内容的提问来源于stack exchange,提问作者tazmin32w

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 03:45:47