【发布时间】:2019-11-04 14:41:32
【问题描述】:
我有一个 URL 字符串:
var url = https://url.com/{{query}}/foo/{{query2}}
我有一行代码可以接收一个字符串,然后在大括号内得到一个包含所有查询的数组:
var queries = String(url).match(/[^{\}]+(?=})/g);
返回:
queries = ['query', 'query2']
我有一个函数parse(queries),它处理这些查询并返回它们的结果列表:
results = ['resultOfQuery', 'resultOfQuery2']
我希望能够获取此列表,然后将 URL 字符串中的查询替换为其结果。这个例子的最终结果是:
url = https://url.com/resultOfQuery/foo/resultOfQuery2
我有两个不同的问题:
String.match代码行中的正则表达式只计算一组花括号{something}。如何修改它以查找一组双花括号 {{something}}?我已经有了结果数组。进行字符串替换的最佳方法是什么,以便将查询及其随附的每组双括号替换为其相应的结果?
【问题讨论】:
-
尝试
var result = s.replace(/{{(.*?)}}/g, function($0,$1) { return parse($1); } ),但您的parse函数应该能够接受单个字符串作为参数。 -
{{ ... }}之间的字符串格式有什么限制?例如。它总是一个有效的 JS 变量名吗? -
{{ }}之间的字符串可以是任意字符串。我的parse()函数完成了所有潜在的错误处理。如果用户愿意,它可能是{{foo}}
标签: javascript node.js regex