我正在尝试在网页上使用输入文本来构建SQL查询(Where子句)。
我们有一些带有数字的“预定义”查询 - 我想让用户有可能写下这样的内容:
[1] AND [2]
[1] OR [2] AND NOT [3]
[1] OR NOT ([2] AND [3])
etc.
是否可以通过js regex进行验证?还是其他方法?我想只向用户提供在括号,括号和单词OR,AND和NOT中写数字的可能性。很好的是检查括号是否正常 - 但最重要的是只创建允许的字符。
答案 0 :(得分:1)
只有在可以限制嵌套深度的情况下才能验证正确的括号嵌套,但即使这样,它也会变得复杂。句法正确性(不允许"[1] OR AND AND"
之类的东西)将变得更加困难。
对于这些问题,您实际上需要一个解析器。
你可以使用正则表达式轻松检查输入中只包含允许的字符/单词/模式:
/^(?:\[\d+\]|\b(?:AND|OR|NOT)\b|[ ()])*$/