Как уточнить результаты регулярного выражения - PullRequest
0 голосов
/ 01 июля 2019
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 и Customers, с измененным регулярным выражением или вторым циклом

1 Ответ

0 голосов
/ 01 июля 2019

Я предлагаю добавить проверку перед добавлением совпадения в массив 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+ буквам и $ подтверждает позицию в конце строки. .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...