javascript - JavaScript 中的正则表达式匹配太多

标签 javascript regex

我正在使用这个表达式:

"g{field1}={field2}a".match(/{([^\{\}]+)\}/g)

我需要的是获取“field1”和“field2”,但它返回一个包含“{field1}”和“{field2}”的数组。

最佳答案

您可以使用 exec,它可以在每次匹配时返回多个捕获组。

var re = /{([^\{\}]+)\}/g,
    matches = [],
    input = "g{field1}={field2}a",
    match;

while (match = re.exec(input)) matches.push(match[1]);

console.log(matches);

你也可以重写你的正则表达式(这里取决于输入字符串可以是什么):

var matches = "g{field1}={field2}a".match(/{([^}]+)}={([^}]+)}/).slice(1);

console.log(matches);

关于javascript - JavaScript 中的正则表达式匹配太多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19860617/

相关文章:

javascript - 如何使用javascript替换字符串中最后一次出现的字符

javascript - RegEx.Test 返回始终 false

regex - 使用正则表达式在 bin 文本中搜索组

javascript - 迭代列表元素 - jQuery

java - 是否有任何有效的 Java 解决方案/算法可以根据带分隔符的键字符串在文本字段中查找值?

mysql - Microsoft SQL Server 相当于 MySQL REGEXP

javascript - 如何测试登录到控制台的方法?

javascript - 为什么当 props 没有改变时 React 会重新渲染子元素?

Javascript:将方法添加到函数原型(prototype)

javascript - 使 UL 继承 Div 的最小高度/高度