我有一个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}}?
1.我已经有了结果数组。什么是最好的方法来做字符串替换,使查询和它们的每个伴随的双括号集被替换为相应的结果?
3条答案
按热度按时间z5btuh9x1#
你可以用下面的模式替换,
{{
-匹配{{
(.+?)
-一次或多次匹配除换行符以外的任何内容注意:-我在这里使用result作为对象,这样查找和替换值就变得容易了,如果你可以改变你的解析函数,考虑从解析返回一个对象
tf7tbtn22#
通用的解决方案,也将与嵌套对象。
使用Regex内置符号作为模板,在每个字符前使用双反斜杠
\\
。这是因为上面的函数使用模板字符串new RegExp('\\^(.+?)\\^', 'g')
而不是RegExp构造函数new RegExp(/\^(.+?)\^/g)
来创建正则表达式,否则单反斜杠就足够了。举个例子
mklgxw1f3#
另一个简单的方法是: