如何创建一个正则表达式来验证包含某些命令的用户表达式?

时间:2016-07-07 16:06:49

标签: regex

我需要验证一个用户输入,其中可以包括括号,单词'或'以及'和'。

规则很简单:

1-圆括号可以在任何地方使用,但是开括号必须有一个括号(我可能用代码验证这部分)。 2-表达式绝不能以'或'结尾。或者'和'在一个街区内。例如:

  

约翰和简 - >行

     

约翰和 - >不行

     

(约翰和) - >不行

     

约翰或 - >不行

     

(约翰或) - >不行

总是这样:

[可选括号] WORD [可选操作和或] [可选括号]

我想出了这个,但这还不够,但这只是一个开始。

\b\w.*(?=or|and).*\w

适用于带括号的内容

注意: 我不在乎单词之间的空白量。

用户可以多次组合这些表达式块。

1 个答案:

答案 0 :(得分:1)

^\(?((\w+|\((?1)\))\s+(?>and|or)\s+(\w+|\((?1)\)))\)?$

我没想到可以做到,但后来我找到了递归。 https://regex101.com/r/aD7dT0/4

编辑1:这已经破了,修好了

编辑2:制作更好的正则表达式+它会进行括号验证,但整个语句的括号除外