javascript - 使用 RegExp 在特殊字符序列之间提取值

标签 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 = 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/

相关文章:

java正则表达式查找和替换

r - 在长度超过 n 个字符的单词之间包含空格

javascript - 我的 Angular JS 出了什么问题

javascript - 尝试使用输入值打印 Javascript 数组

javascript - 意外的等待/异步行为

regex - 如何检查字符串是否包含特定字符

javascript - 正则表达式定位任何字母串旁边的任何数字串

javascript - 在 useEffect 和 useCallback 中添加详尽的依赖项会导致死循环

javascript - 如何过滤 JavaScript 对象以仅显示我需要的数据

ios - IOS程序中的正则表达式问题