在JavaScript中,我想捕获像%{VAR}
这样的东西。
以下代码:
"I am %{name} and I am %{age}".match(/%\{(.+?)\}/g);
给我:
["%{name}", "%{age}"]
同时我想:
["name", "age"]
答案 0 :(得分:1)
您需要使用RegExp#exec
并在循环中调用它。 String#match()
失去所有捕获组。
var re = /%{([^{}]+)}/g;
var str = 'I am %{name} and I am %{age}';
var m, arr = [];
while ((m = re.exec(str)) !== null) {
arr.push(m[1]);
}
document.body.innerHTML = JSON.stringify(arr, 0, 4);
此外,您可以使用改进的正则表达式:%{([^{}]+)}
。
在JS中,您不必转义{
和}
。另外,为了提高效率,您可以使用否定字符类 [^{}]
来匹配除{
或}
之外的任何字符
正则表达式解释:
%{
- 匹配文字%{
([^{}]+)
- 第1组:匹配{
和}
以外的1个或多个字符}
- 文字}
。