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

如何检测URL中的Mustache占位符及其位置?

解决方案

Mustache本身没有提供专门的API来检测字符串中的占位符,最直接高效的方式是用正则表达式匹配Mustache的变量格式({{ 变量名 }},允许变量名前后有空格)。

正则匹配方案

使用以下正则表达式可以匹配绝大多数普通Mustache变量占位符:

/{{\s*([a-zA-Z0-9_]+)\s*}}/g
  • {{:匹配占位符的起始标记
  • \s*:兼容变量名前后带0个或多个空格的写法
  • ([a-zA-Z0-9_]+):捕获合法的Mustache变量名(仅支持字母、数字、下划线)
  • }}:匹配占位符的结束标记
  • g:全局模式,找出字符串中所有符合的占位符

示例代码(JavaScript)

以下代码可以检测URL中的占位符,并返回每个占位符的名称、起始位置、结束位置:

const targetUrl = '//workflow/v99/history/{{ espisodeId }}';
const mustacheRegex = /{{\s*([a-zA-Z0-9_]+)\s*}}/g;
let matchResult;
const detectedPlaceholders = [];

// 遍历所有匹配项
while ((matchResult = mustacheRegex.exec(targetUrl)) !== null) {
  detectedPlaceholders.push({
    variableName: matchResult[1],
    startPosition: matchResult.index,
    endPosition: matchResult.index + matchResult[0].length,
    fullPlaceholder: matchResult[0]
  });
}

console.log(detectedPlaceholders);
// 输出结果:
// [
//   {
//     variableName: 'espisodeId',
//     startPosition: 29,
//     endPosition: 45,
//     fullPlaceholder: '{{ espisodeId }}'
//   }
// ]

额外说明

  • 此方法无需依赖Mustache库,直接通过字符串匹配完成检测,性能更优。
  • 如果你已经将URL按/分割为路径片段,可以对每个片段单独执行正则匹配,快速定位到包含占位符的具体路径段。
  • 若需要兼容Mustache的section标签、注释等复杂语法,可以扩展正则规则,但普通变量场景下上述正则已足够覆盖需求。

内容的提问来源于stack exchange,提问作者André Castro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 12:55:24