2015-09-17 3 views
0

Я принимаю условие if, такое как выражение excel;Регулярное выражение для условия if

IF(condition1, value_if_true1, IF(condition2, value_if_true2, value_if_false2))

Я хочу, чтобы регулярное выражение для извлечения каждого условия, например, когда я запускаю следующее: var matchInfo = REGEXP.exec(fieldExpression);

я должен получить что-то вроде этого, как результат: matchInfo[0]=condition1, matchInfo[2]=condition2

как Достигнуть этого?

+1

Добро пожаловать на Stack Overflow! Пожалуйста, примите [тур], осмотритесь и прочитайте [помощь], в частности [* Как я могу задать хороший вопрос? *) (/ Help/how-to-ask) * Очень сложно выясните, что вы просите прямо сейчас. Возможно, это рабочий пример кода 'if', а затем четкое утверждение того, что вы хотите сделать (и почему, поскольку' if' вполне разумно в большинстве случаев). –

ответ

0

Здесь. Это даст вам условие 1 и условие 2, основанное на шаблоне, который вы дали. Поскольку вы ищете несколько совпадений, я использую цикл while, чтобы пройти, пока не будет больше совпадений.

var pattern = /IF\(\s(\w+)/g; 
var str = 'IF(condition1, value_if_true1, IF(condition2, value_if_true2, value_if_false2))'; 
var myMatches = []; 
while ((newMatch = pattern.exec(str)) !== null) { 
    myMatches.push(newMatch[1]); 
} 

Docs здесь: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec

+0

его не работает на live sceneario if (на английском языке = 40,50, если (Процент = 40,60,70)) – user3106347

+0

Просто помните, что это не то же самое, что ваш образец. В вашем примере у вас было заглавное IF, пробел перед условием, а условие было переменной, а не выражением. В этом новом примере, который вы дали, вам нужно будет изменить регулярное выражение для учета измененных условий. Измените эту строку: 'var pattern =/if \ (([\ w =] *)/g;' – Lucas