我有某种迷你模板引擎,需要从任何%{}%
事件之间的字符串中提取值。
我尝试使用以下方法进行测试:
const EXTRACT_VALUES = /%{(.*?)}%/g
let testString = 'bla bla %{var1}% bla bla {var11} bla bla %{var22} bla bla %{{var33}}% bla bla %{var4}% bla bla %{ var5 }%'
let values = []
let field
while((field = EXTRACT_VALUES.exec(testString)) != null) {
values.push(field[1])
}
console.log(values)
但是当所需的输出应为
["var1", "var22} bla bla %{{var33}", "var4", " var5 "]
时,我得到的输出为["var1", "var4", " var5 "]
为此,我需要在RegExp中进行哪些更改?
最佳答案
尝试在捕获的元素中使用{
不允许字符}
和[^{}]+
而不是全部捕获,这会使您获得的其他字符无效。
const EXTRACT_VALUES = /%{([^{}]+)}%/g