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
我想消除带有修订的regexp或2nd loop的结果,如Rev和Customer之类的字母
答案 0 :(得分:0)
我建议在将匹配项添加到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个以上的字母,而$
声明字符串末尾的位置。