function getPrecedents(thisFormula){
var exp = /(\w+\!)?\$?[A-Z]{1,}(?:\d+)?(\:?\$?\w+)*(?!\()\b/gm;
var results=[];
var result;
while ((result=exp.exec(thisFormula))!== null){
results.push(result);
}
return results;
} 从上面的代码中,我得到了以下结果
Trigger_Hires!$AA$15
AD$7
Trigger_Hires!$AC60
Trigger_Hires!$AB60
Rev
Import_Staffing!AD$16
Trigger_Hires!$AC60
Trigger_Hires!$AB60
Customers
Import_Staffing!AD$19
Trigger_Hires!$AC60 我想消除的结果,只是像Rev和客户修改的regexp或第二个循环的字母
发布于 2019-07-01 22:15:01
我建议在将匹配项添加到results数组之前添加检查:
while (result=exp.exec(thisFormula)) {
if (!/^[A-Za-z]+$/.test(result[0]))
results.push(result[0]);
}注意:您需要访问result[0]来获取整个正则表达式匹配值。为了检查匹配值是否都是字母,使用^[A-Za-z]+$正则表达式:^断言字符串开头的位置,[A-Za-z]+匹配1+字母,$断言字符串结尾的位置。
https://stackoverflow.com/questions/56837141
复制相似问题