2016-12-25 134 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. 有可能是& &或||运算符只在Condition表达式中。

  2. 可能有任何数量的条件C1,C2,C3,C4 ......等等。

  3. 开闭括号应匹配并且在每个支架上,应该有两个条件由& &或分离||运营商。

  4. 只有()括号将用在表达式中。

我怎样才能做到这一点是有可用于此任何JavaScript正则表达式?任何帮助,高度赞赏。提前致谢。

+0

你到目前为止尝试了什么... –

+0

不是一个有意义的问题。 –

+0

我会将其拆分为树结构并遍历树 –

回答

0

终于有了解决办法!实际上,我想评估上面的逻辑运算符表达式,其中每个C1,C2 ... Cn将在API端由true或false替换,并将使用javax.script.ScriptEngine.eval()进行评估。所以在这种情况下,我想验证UI侧的表达式。

因此,为了验证它,我只使用了javascript的eval(),我将其中的C1,C2 ... Cn替换为true或false(只是为了检查该表达式是否在语法上正确或不)。

例如

(C1 & & C2)& &(C3 || C4)

要检查语法我刚更换了C1,C2,C3和C4与像布尔值以上表达式“ (真& &真)& &(真||真)”,并测试它使用

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

如果不存在=>'未捕获的SyntaxError:意外的输入结束'错误表示表达式有效。这对我有用。

谢谢