我有某种迷你模板引擎,需要从任何%{}%事件之间的字符串中提取值。

我尝试使用以下方法进行测试:

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

10-05 20:58
查看更多