我有某种迷你模板引擎,需要从任何 %{}%
出现之间的字符串中提取值。
我已经尝试通过以下方式对其进行测试:
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
关于javascript - 使用 RegExp 在特殊字符序列之间提取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51855123/