Javascript-将文本验证为和/或表达式

Javascript-将文本验证为和/或表达式,javascript,validation,Javascript,Validation,我有下面的表达式文本 (1 AND 2) OR (3 AND 4) 这是表单的输入,我想验证它是否是有效的表达式。缺少括号或拼写错误和/或。。。我希望这条规则有效。这只是一个例子。我希望验证适用于任何表达式规则 1 OR (1 AND 2) OR (1 AND (2 OR 3)) //Valid 1 OR (1 AND 2) OR (1 (2 OR 3)) //Not Valid 1 OR (1 AND 2) OR (1 AND (2 OR 3) //Not Valid 1 OR (1

我有下面的表达式文本

(1 AND 2) OR (3 AND 4)
这是表单的输入,我想验证它是否是有效的表达式。缺少括号或拼写错误和/或。。。我希望这条规则有效。这只是一个例子。我希望验证适用于任何表达式规则

1 OR (1 AND 2) OR (1 AND (2 OR 3))  //Valid
1 OR (1 AND 2) OR (1 (2 OR 3))  //Not Valid
1 OR (1 AND 2) OR (1 AND (2 OR 3)  //Not Valid
1 OR (1 AND 2) OR (1 AND (2 O)R 3  //Not Valid

首先,想想帕伦夫妇。从左到右解析。您可以有一个计数器,其递增(递减)。如果是否定的,你的表达是无效的。如果它的结尾不是零,那么它是无效的

然后从表达式中去掉paren并检查正则表达式

^\d+\s+(AND|OR)\s+\d+(\s+(AND|OR)\s+\d+)*$
哪个在寻找

(start)integer, some whitespace, integer
后跟零或更多

some whitespace, integer

到目前为止什么都没有。。。我不知道怎么开始我不明白这个问题的否决票!简单化方法:步骤1:检查
()
是否平衡。。。步骤2:删除它们。。。第三步:检查每一个单词是否都是和或
我不明白问题的否决票-堆栈溢出希望您自己尝试解决问题我想要的是想法而不是代码。。。是的,“简单化方法”是我想要的一切<代码>!s、 匹配(/[()]/g).减少((r,b)=>r<0?r:(b='('?r+1:r-1),0);
删除参数的好方法。我试图像执行一样解决它…但没有理由。。。Thanks@Michalis删除了关于面试/作业的评论;-)幸运的是,如果你高兴,请考虑标记为接受。“正确”的解决方法是将表达式解析成二进制树,其中布尔运算符是分支节点,子是整数或子树。检查最后一个例子到我的问题。我有一些打开和关闭参数的计数,但它是无效的。我必须做更复杂的分析,以确定这个偏执论点是否有效。但我想我知道怎么。。。稍后我会发布我的代码。谢谢