我需要验证一个用户输入,其中可以包括括号,单词'或'以及'和'。
规则很简单:
1-圆括号可以在任何地方使用,但是开括号必须有一个括号(我可能用代码验证这部分)。 2-表达式绝不能以'或'结尾。或者'和'在一个街区内。例如:
约翰和简 - >行
约翰和 - >不行
(约翰和) - >不行
约翰或 - >不行
(约翰或) - >不行
总是这样:
[可选括号] WORD [可选操作和或] [可选括号]
我想出了这个,但这还不够,但这只是一个开始。
\b\w.*(?=or|and).*\w
适用于带括号的内容
注意: 我不在乎单词之间的空白量。
用户可以多次组合这些表达式块。
答案 0 :(得分:1)
^\(?((\w+|\((?1)\))\s+(?>and|or)\s+(\w+|\((?1)\)))\)?$
我没想到可以做到,但后来我找到了递归。 https://regex101.com/r/aD7dT0/4
编辑1:这已经破了,修好了
编辑2:制作更好的正则表达式+它会进行括号验证,但整个语句的括号除外