You need to enable JavaScript to run this app. 如何在Node.js中提取字符串/文档中大括号内的变量用于doctemplater填充
优惠活动
大模型
产品
解决方案
定价
更多

如何在Node.js中提取字符串/文档中大括号内的变量用于doctemplater填充

提取大括号包裹变量的实现方案

你可以根据自己的使用场景选择以下两种实现方式:

通用正则匹配方案

不依赖doctemplater的原生JS实现,适合纯文本的变量提取场景:

const mystring = "I am a {job} and my name is {name}. my age is {age} years old";
// 全局匹配{xxx}格式的占位符,捕获大括号内的内容
const variableRegex = /{([^}]+)}/g;
const result = [];
let matchItem;
while ((matchItem = variableRegex.exec(mystring)) !== null) {
  result.push(matchItem[1]);
}
// 输出结果:['job', 'name', 'age']
console.log(result);

注意:该方案仅适配无嵌套大括号的场景,完全符合doctemplater默认的模板语法规则

Doctemplater原生API方案

你正在使用的doctemplater本身提供了直接提取模板变量的API,比自己手写正则覆盖的场景更全,可以兼容循环、条件判断等特殊模板语法里的变量:

const fs = require('fs');
const PizZip = require('pizzip');
const Docxtemplater = require('docxtemplater');

// 加载docx模板文件
const templateContent = fs.readFileSync('你的模板文件路径.docx', 'binary');
const zip = new PizZip(templateContent);
const doc = new Docxtemplater(zip);

// 直接调用getTags方法获取所有需要填充的变量
const variables = doc.getTags();
console.log(variables);

注意:该方法会自动过滤语法标签,仅返回需要填充的变量值,是当前场景的最优选择


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 17:54:05