Javascript正则表达式-从列出的函数中去掉参数
我正在尝试构建一个jquery插件,用于定位excel公式并对其进行评估,目前使用它作为解析器和一些正则表达式来替换占位符,问题是我对这两个方面一无所知,完整的代码目前在 我想做的是: 假设我有一个注册的公式成员和它的函数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 } //....
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”);谢谢