检查一个字符串是否只有一些特定的单词

时间:2014-11-02 04:58:51

标签: javascript php regex

我正在使用带括号,数字和逻辑运算符的字符串(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

1 个答案:

答案 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

示例:http://regex101.com/r/qS3tD8/6