正则表达式验证JS中的逻辑运算符表达式

时间:2015-04-08 04:08:50

标签: javascript c#

我从Regex to validate logical && || operators in string获得了正则表达式来验证C#

中的逻辑运算符表达式
"^(?=^[^()]*\((?>[^()]+|\((?<DEPTH>)|\)(?<-DEPTH>))*(?(DEPTH)(?!))\)[^()]*$)[(]*\d+[)]*(\s+(&&|\|\|)\s+[(]*\d+[)]*)*$"

但我不能用它作为JS。任何人都可以帮助我将这个正则表达式转换为JS或分享任何工具将RegExp从C#转换为JS吗?

1 个答案:

答案 0 :(得分:0)

您无法直接将其转换为JS。 .NET支持递归正则表达式而JS则不支持(我反对使用它,因为它无法读取和维护)。

最好使用基于堆栈的解析器(即状态机)。这个问题与你如何构建计算器的问题没有什么不同(例如,你将如何解析像“(1 + 2)* 3”这样的字符串?)。例如,您可以找到类似here的简单解析器。