Ros*_*ena 2 javascript regex algorithm jquery parsing
我正在开发一个需要验证数学表达式的JavaScript应用程序,我不知道如何做到这一点.
我的语法示例是
(keyword1 + keyword2) * (keyword1 / (keyword1 + keyword1))
Run Code Online (Sandbox Code Playgroud)
在这里,keyword1并且keyword2可以是任意数字,和有效的运营商是标准的加,减,乘,除.
有没有人有任何想法如何做到这一点,可能使用正则表达式?
有很多方法可以解决这个问题.我建议你阅读有关Context Free Grammars/Languages的内容.这有点简单(虽然它确实是一个CFG),但是了解语法和解析技术总是有帮助的.
我应该注意到你在这里描述的语言不是常规的,所以没有正则表达式能够解析它(简单地使用抽取引理证明了这一点).此外,我建议不要使用它们以有意义的方式提供帮助 - 它们不是强大的解析工具.
您可以使用解析更复杂语法的解析库并实现您的简单案例.如果您正在寻找更直接的解决方案,递归就是您的朋友:
我们将有效表达式定义为:
expression ::= literal | expression op expression | (expression)
op ::= + | - | / | *
Run Code Online (Sandbox Code Playgroud)
文字是一个数字.
想想如何调整的定义可以更改语言,特别是想想如何实现不同可以用不同的策略解决这个问题:左到右的评价,或者相反,等等.