Javascript 使用RegExp在特殊字符序列之间提取值
我有一些小型模板引擎,需要从任何Javascript 使用RegExp在特殊字符序列之间提取值,javascript,regex,Javascript,Regex,我有一些小型模板引擎,需要从任何%{}%事件之间的字符串中提取值 我试着用以下方法来测试它: 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 =
%{}%
事件之间的字符串中提取值
我试着用以下方法来测试它:
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
虽然这从技术上回答了这个问题,但我不禁想知道,如果有人想在字符串中插入转义的
\{
。