2016-12-25 4 views
-2

Мне нужно применить проверку в текстовое поле условия выражение, выражение которого находится в одном из следующих форматов.Проверка JavaScript/регулярное выражение

Valid Inputs:- 
1) (C1 && C2) || (C1 || C3) 
2) (C1 || C3) 
3) C1 
4) (C1 && C2) || C3 ...etc. 

Invalid Inputs:- 
1) (C1 && C2 
2) (C1 ||) C2 
3) C1 && C2  ...etc. 

Очки заботиться:

  1. Там может быть & & или || операторов только в выражении условия.

  2. Может быть любое количество условий C1, C2, C3, C4 ..... так далее.

  3. открывающие и закрывающие кронштейны должны совпадать и в каждом кронштейне должны быть два условия, разделенные & & или || оператор.

  4. В выражении будут использоваться только скобки ().

Как я могу это сделать, есть ли регулярное выражение javascript для этого? Любая помощь высоко ценится. Заранее спасибо.

+0

Что вы пробовали до сих пор ... –

+0

не имеет смысла вопрос. –

+0

Я бы разделил его на древовидную структуру и перебирал дерево –

ответ

0

Наконец-то получил решение!

На самом деле, я хотел бы оценить приведенное выше логическое выражение оператора, где каждый C1, C2 ... Cn будет заменен либо истинным, либо ложным в стороне API и будет оцениваться с помощью javax.script.ScriptEngine.eval() поэтому в этом случае я хочу проверить выражение на стороне интерфейса.

Итак, чтобы проверить его, я просто использовал eval() javascript, в котором я передам выражение условия, заменив C1, C2 ... Cn на true или false (просто чтобы проверить, является ли выражение синтаксически правильным или не).

например

(C1-C2-& &) & & (С3 || С4)

Чтобы проверить приведенное выше выражение для синтаксиса я просто заменил C1, C2, C3 и C4 с логическими значениями, такими как " (истинная & & истина) & & (истина || истина)»и протестировали его с помощью

eval("(true && true) && (true || true)") 

, если нет ошибки = «Неисправность SyntaxError: Неожиданный конец ввода» означает, что выражение действительно. Это работает для меня.

Благодаря

Смежные вопросы