代码之家  ›  专栏  ›  技术社区  ›  Fabio K

表达式内部的javascript regex匹配表达式?(总和\(.*?\))

  •  1
  • Fabio K  · 技术社区  · 8 年前

    regex应该匹配所有的和函数,这样我可以稍后解析它们。

    (sum\(.*?)\))
    
    

    但它与sum(999)不匹配,只与其他sum函数匹配。我对正则表达式比较陌生,所以我不知道我做错了什么。有人能帮我吗?

    (SUM\(.*?\))
    

    但它与sum(999)不匹配,只与其他sum函数匹配。我对正则表达式比较陌生,所以我不知道我做错了什么。有人能帮我吗?

    1 回复  |  直到 8 年前
        1
  •  0
  •   aprogrammer    8 年前

    SUM\([0-9\;]+\)? 这个regex将显示每个求和表达式,而不需要包含偏执。

    let data = "SUM(1;2;SUM(999);SUM(3;4);SUM(9))";
    let match = data.match(/SUM\([0-9\;]+\)?/gm)
    

    ["SUM(1;2;", "SUM(999)", "SUM(3;4)", "SUM(9)"]
    

    let data = "SUM(1;2;SUM(999);SUM(3;4);SUM(9))";
    let match = data.match(/SUM\([0-9\;]+\)?/gm).map(r => r.slice(-1) === ")" ? r : r.concat(")"))
    

    ["SUM(1;2;)", "SUM(999)", "SUM(3;4)", "SUM(9)"]