我正在使用带括号,数字和逻辑运算符的字符串(AND,OR,NOT) 我想通过检查用户是否输入正确的运算符来验证我的字符串。
示例:
(12 AND 13) //correct
(12 BAND 13) //incorrect
(12 AND 13 OR 14) //correct
(12 DNA 13 OR 14) //incorrect
我想在javascript或php中验证这个字符串,
所以REGEX或pregmatch就能胜任。
编辑: -
字符串中可以有任意数量的运算符。还可以存在嵌套括号,例如
(11 AND 12 AND 13 OR 14 NOT 15) //correct
((12 AND 13) NOT 14) //correct
答案 0 :(得分:2)
使用正则表达式
^\(\d+(\s+(AND|OR|NOT)\s+\d+)+\)$
参见示例:http://regex101.com/r/qS3tD8/1
<强>解释强>
^
将正则表达式固定在字符串的开头
\(
匹配(
\d+
一个或多个数字
\s
匹配空格
(AND|OR|NOT)
匹配AND
OR
NOT
\)
匹配)
$
将正则表达式锚定在字符串的末尾
修改强>
^\(\(?\d+(\s+(AND|OR|NOT)\s+\(?\d+\)?)+\)$
匹配任意数量的运算符和嵌套的paranthesis