我的表达方式有以下示例
A > 16
A <= 16 and A >= 1
A < 40 or A > -40
A != 19 and A > 50 and A != 8
A > 1 or A < 2
我可以在单个正则表达式中进行这样的评估吗?
基本上
- 仅允许以下符号
> < = ! - != >= <=
and
之前必须有空格/or
运算符和A
之后 仅当它不是第一个字母时。- 我的变量始终是常量,在本例中为
A
谷歌这次没有提供帮助,我对正则表达式真的很陌生,关于如何实现这些事情的指南会很好
最佳答案
这样的事情应该有效:
^A ([<>!]=?|=) -?\d+( (and|or) A ([<>!]=?|=) -?\d+)*$
它允许表达式 where A
使用比较器 <
之一与某个正整数或负整数进行比较, >
, !
, <=
, >=
, !=
,后跟任何数量的其他类似表达式,以 and
分隔或or
—您列出了!
和!=
作为单独的符号,所以我允许两者作为比较器,即我的解决方案实际上允许像 A ! 2
这样的表达式。如果不需要,请替换 ([<>!]=?|=)
与 ([<>]=?|!?=)
在上面的模式中。
您可以测试一下here .
这是一个稍微简化的版本,您也可以尝试一下:
^(A ([<>!]=?|=) -?\d+( (and|or) |$))+$
关于正则表达式 匹配复杂表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17847730/