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

如何用正则分割含可变变量的{{ 变量名 }}格式字符串?

解决方案

核心思路

要实现需求,需要匹配目标变量片段并保留分割结果中的匹配项,同时将匹配到的带空格的片段统一替换为标准格式{{变量值}}。关键在于使用正则捕获组让split()方法保留匹配内容,再对匹配项做格式化处理。

具体实现代码

// 转义正则特殊字符,避免动态变量包含特殊字符时出错
function escapeRegExp(str) {
  return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}

// 动态变量
const targetVar = 'text1';
const escapedVar = escapeRegExp(targetVar);

// 构造正则:捕获{{和}}之间任意空格+目标变量+任意空格的片段
const splitRegex = new RegExp(`({{\\s*${escapedVar}\\s*}})`, 'g');

// 输入字符串
const inputStr = '{{ text1  }} 123 {{text1}}{{text1}}  {{  text1}}134';

// 执行分割+过滤空项+格式化匹配片段
const result = inputStr
  .split(splitRegex)
  .filter(item => item !== '') // 移除分割产生的空字符串
  .map(item => {
    // 判断是否为目标变量片段,是则替换为标准格式
    return splitRegex.test(item) ? `{{${targetVar}}}` : item;
  });

console.log(result);
// 输出:["{{text1}}"," 123 ","{{text1}}","{{text1}}","  ","{{text1}}","134"]

正则说明

  • ({{\\s*${escapedVar}\\s*}}):用捕获组包裹匹配内容,确保split()会将匹配到的片段保留在结果数组中。
  • \\s*:匹配任意数量的空格(包括0个),覆盖目标片段中变量前后的所有空格情况。
  • escapeRegExp函数:处理动态变量中的正则特殊字符(如., *, ?等),避免正则语法错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 01:45:07