JavaScript中的正则表达式,用于在字符串中找到的第一个SUM / MIN / MAX / AVG

时间:2013-12-05 10:11:37

标签: javascript jquery regex

我要做的是以下内容:

SUM(销售)+ SUM(收入)

或MIN(销售)+ SUM(收入)。

我想要的是第一次计算。因此对于1),将给出结果“SUM”,并且对于2)将给出结果“MIN”。

我已经为if语句尝试了这个,但它要么不可能,要么难以做到这一点。任何人都可以指导我使用RegEx这样做吗?

我在if语句中尝试了什么:

function hasFormula(formulaToLower) {
    // formulaToLower could equal "SUM(Sales) + SUM(Revenue)" etc
    // could also equal "SUM(Sales) + MIN(Revenue)" - this will return MIN, but it return SUM.

    if (formulaToLower.indexOf('sum') !== -1) {
         return "SUM";
    }

    if (formulaToLower.indexOf('min') !== -1) {
         return "MIN";
    }
}

显然,这将首先显示MIN,即使它是第二个,依此类推......

1 个答案:

答案 0 :(得分:2)

您可以使用允许所需组合的正则表达式。如果使用全局修饰符,匹配将以正确的顺序返回,否则只有第一个匹配将返回:

var matcher = /SUM|MIN|MAX|AVG/;

var str1 = 'SUM(Sales) + SUM(Revenue)';
var str2 = 'MIN(Sales) + SUM(Revenue)';

console.log(str1.match(matcher)[0]) // SUM
console.log(str2.match(matcher)[0]) // MIN

* [0]部分获取match返回的结果数组中的第一个元素。