【发布时间】:2020-08-16 06:37:36
【问题描述】:
我正在尝试获取查询参数并验证用户提供的语法是否正确。正则表达式似乎是最好的选择,但我在制作它时遇到了麻烦,因此该模式不允许重复。
我想出的模式是:
(^(\w+)(=|!=|>=|>|<=|<|~)((')(.*)('))(\s(AND|OR)\s)(\w+)(=|!=|>=|>|<=|<|~)((')(.*)('))$)
用户提供的语法应该是:
[字段][谓词][单引号][值][单引号][空格][逻辑运算符][空格][字段][谓词][单引号][值][单引号]
地点:
- 字段是[任何单词]
- 谓词是 [= | != | >= | > |
- 逻辑运算符是 [AND |或(两边有空格)]
- value 是 [任何用单引号括起来的单词]
示例如下所示:field1='value1' OR field2='value2'
我遇到的问题是我创建的模式允许这样的事情:
field1='value1' OR field2='value2field1='value' OR field2='value2'' [这应该行不通]
field1='value1' OR field2='value2 field1='value' OR field2='value2'' [这应该行不通]
field1='value1' OR field2='value2' AND field3='value3' OR field4='value4'' [这应该行不通]
如果它重复,任何帮助将不胜感激。
【问题讨论】:
-
java
!=javascript。请选择一种语言并删除另一种语言。 -
我编辑了这篇文章。现在只有正则表达式。
标签: regex