Javascript正则表达式-从列出的函数中去掉参数

Javascript正则表达式-从列出的函数中去掉参数,javascript,jquery,regex,excel,Javascript,Jquery,Regex,Excel,我正在尝试构建一个jquery插件,用于定位excel公式并对其进行评估,目前使用它作为解析器和一些正则表达式来替换占位符,问题是我对这两个方面一无所知,完整的代码目前在 我想做的是: 假设我有一个注册的公式成员和它的函数 var formula = { member:['MAX','MIN','AVG','SUM'], max:function(cell1,cell2){ ... //return the max } //....

我正在尝试构建一个jquery插件,用于定位excel公式并对其进行评估,目前使用它作为解析器和一些正则表达式来替换占位符,问题是我对这两个方面一无所知,完整的代码目前在

我想做的是:

假设我有一个注册的公式成员和它的函数

var formula = {
    member:['MAX','MIN','AVG','SUM'],
    max:function(cell1,cell2){
        ...
        //return the max
    }
    //.... and other function not listed
}
并且有一个带有数据公式属性的HTML元素

<div data-formula="MAX($A1,$A5)"></div>
上述正则表达式在包含MAX($B1,$B3)等单个公式时按预期工作

但在包含更复杂的公式时不起作用

IF($B1 > 3,SUM($B1,$B3),MIN($B1,$B3))
//translated to IF(2.1 > 3,SUM(2.1,2.3),MIN(2.1,2.3))
//expected IF($B1 > 3,SUM(2.1,2.3),MIN(2.1,2.3))
提前感谢

使用此正则表达式:

(SUM|AVG|MAX|MIN)\(([^(^)]*)\)
使用
IF($B1>3,SUM($B4,$B5),MIN($B1,$B3))
将匹配
SUM($B4,$B5)
MIN($B1,$B3)
,匹配的组为
$B4,$B5
$B1,$B3

测试

在代码中,修改此行:

var $formula_regex  = new RegExp('('+formula.member.join('|')+')\(([^(^)]*)\)','g');
使用此正则表达式:

(SUM|AVG|MAX|MIN)\(([^(^)]*)\)
使用
IF($B1>3,SUM($B4,$B5),MIN($B1,$B3))
将匹配
SUM($B4,$B5)
MIN($B1,$B3)
,匹配的组为
$B4,$B5
$B1,$B3

测试

在代码中,修改此行:

var $formula_regex  = new RegExp('('+formula.member.join('|')+')\(([^(^)]*)\)','g');

我只是尝试一下,正则表达式字符串低于(MAX | MIN | SUM | AVG)([^(^)]*)对公式进行测试,如果($B1>3,SUM($B1,$B3),MIN($B1,$B3)),结果是使用exec()$formula|regex.exec(这个.data[$key])。公式只需向$formula regex$formula regex添加更多转义,需要更多转义var$formula regex=new RegExp('(“+formula.member.join(“|”)+”([^(^)]*)\,“g”);谢谢我试试看,正则表达式字符串低于(MAX | MIN | SUM | AVG)([^(^)]*)根据公式IF($B1>3,SUM($B1,$B3),MIN($B1,$B3))进行测试,结果是使用exec()$formula | regex.exec($this.data[$key].formula只需向$formula\u regex$formula\u regex添加更多转义,需要更多转义变量$formula\u regex=new RegExp(“(“+formula.member.join(“|”)+”)\([^(^)]*)\”,“g”);谢谢