我有一个像这样的字符串:
"hello %{name} good %{middle} bye"
。
我正在尝试找到一种有效的方法来提取大括号之间的值,所以理想情况下我最终会得到一个
["name", "middle"]
数组。
使用
match
我几乎可以到达那里。以下返回:['%{name}', '%{middle}']
:
"hello %{name} good %{middle} bye".match(/%{([\w]+)}/g)
我不确定为什么它在返回中包含
%
、{
和 }
字符。
如何调整正则表达式以仅匹配
name
和 middle
?
您可以使用命名的捕获组。在下面的示例中,我们将其命名为
value
,然后在正则表达式匹配迭代期间提取这些值:
let s = "hello %{name} good %{middle} bye"
let r = [...s.matchAll(/%{(?<value>[\w]+)}/g)].map(i => i.groups.value)
console.log(r)