我从Regex to validate logical && || operators in string获得了正则表达式来验证C#
中的逻辑运算符表达式"^(?=^[^()]*\((?>[^()]+|\((?<DEPTH>)|\)(?<-DEPTH>))*(?(DEPTH)(?!))\)[^()]*$)[(]*\d+[)]*(\s+(&&|\|\|)\s+[(]*\d+[)]*)*$"
但我不能用它作为JS。任何人都可以帮助我将这个正则表达式转换为JS或分享任何工具将RegExp从C#转换为JS吗?
答案 0 :(得分:0)
您无法直接将其转换为JS。 .NET支持递归正则表达式而JS则不支持(我反对使用它,因为它无法读取和维护)。
最好使用基于堆栈的解析器(即状态机)。这个问题与你如何构建计算器的问题没有什么不同(例如,你将如何解析像“(1 + 2)* 3”这样的字符串?)。例如,您可以找到类似here的简单解析器。