我要做的是以下内容:
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,即使它是第二个,依此类推......
答案 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返回的结果数组中的第一个元素。